//g++ 1.cpp -std=c++14 -O2 -I . #include using namespace std; #include #include using namespace atcoder; using ll = long long; using ld = long double; using vi = vector; using vvi = vector; using vll = vector; using vvll = vector; using vld = vector; using vvld = vector; using vst = vector; using vvst = vector; #define fi first #define se second #define pb push_back #define eb emplace_back #define pq_big(T) priority_queue,less> #define pq_small(T) priority_queue,greater> #define all(a) a.begin(),a.end() #define rep(i,start,end) for(ll i=start;i<(ll)(end);i++) #define per(i,start,end) for(ll i=start;i>=(ll)(end);i--) #define uniq(a) sort(all(a));a.erase(unique(all(a)),a.end()) void solve(){ ll n,a,b; cin>>n>>a>>b; ll ans=(n*(n-1))/2; if(a==1||b==1){ cout<>t; while(t--){ solve(); } } /* x,y>=1かつ2<=x+y<=Nの数は簡単 -> x,y>=0かつ0<=x+y<=N-2とみなせるので (1+2+...+N-1)=1/2*N*(N-1) ここから不適を消したい (x,y)が違反としてx=pと決め打つ この時p%A!=0かつy%B!=0だとやばい とりあえずp%A!=0を無視してy%B!=0となるyの数は N-p - (N-p)/B個 で1<=p<=N-1についてこれを足し合わしたくて、N-pの合計は簡単、(N-p)/Bの合計はfloor_sumでいける ここで p%A==0だけど引いちゃった分を回収したい 1<=p<=N-1 かつ p%A==0 で (N-p)/B の合計 N-1/A(切り捨て)=Zとして1<=q<=Zで (N-Aq)/B N-pの合計 1<=q<=Zで (N-Aq)/1とみなせて */