AtCoder Regular Contest 102
阿新 • • 發佈:2018-09-02
contest HERE src tco http 技術分享 spa std The
作為一個大蒟蒻,我就只有時間寫c了QAQ
題目鏈接
題意:
給n,k,求有多少個3元組(a,b,c),滿足a+b,b+c,c+a都是k的倍數(n,k<=2e5,1<=a,b,c<=n)
根據題意可以推導:
∵(a+b)%k=0
(b+c)%k=0
(c+a)%k=0
∴[a+b-(b+c)]%k=0
∴(a-c)%k=0
∴(a+c+a-c)%k=0
∴2a%k=0
同理:2b%k=0,2c%k=0
分類討論:
當k為奇數時,顯然a,b,c都是k的倍數,答案就是pow(int(n/k),3)
當k為偶數時,a,b,c都是k/2的倍數,但a+b的和不為偶數時,就不符合要求了。
所以a,b,c要麽全是奇數,要麽全是偶數。
答案就是pow(int(n/(k/2),3)+pow(int((n+k/2)/k,3).
1 #include<bits/stdc++.h> 2 ll n,k,p,ans; 3 int main(){ 4 cin>>n>>k; 5 p=n/k; 6 ans=p*p*p; 7 if(k%2==0){ 8 p=(n+(k/2))/k; 9 ans+=p*p*p;代碼10 } 11 cout<<ans<<‘\n‘; 12 }
AtCoder Regular Contest 102