AtCoder Regular Contest 102

Posted mimiorz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AtCoder Regular Contest 102相关的知识,希望对你有一定的参考价值。

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

 

以上是关于AtCoder Regular Contest 102的主要内容,如果未能解决你的问题,请参考以下文章

刷题AtCoder Regular Contest 001

AtCoder Regular Contest 094

[Atcoder Regular Contest 060] Tutorial

AtCoder Regular Contest 103

AtCoder Regular Contest 128

AtCoder Regular Contest 119 C