首页 > 其他 > 详细

AtCoder Regular Contest 102

时间:2018-09-01 22:33:16      阅读:147      评论:0      收藏:0      [点我收藏+]

作为一个大蒟蒻,我就只有时间写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

原文:https://www.cnblogs.com/mimiorz/p/9571862.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!