CSU 1803 2016
湖南省第十二届大学生计算机程序设计竞赛$A$题
枚举。
处理一下$\% 2016$之后的数分别有几个,然后$2016*2016$枚举一下统计方案数就可以了。
#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<vector> #include<map> #include<set> #include<queue> #include<stack> #include<iostream> using namespace std; typedef long long LL; const double pi=acos(-1.0),eps=1e-6; void File() { freopen("D:\\in.txt","r",stdin); freopen("D:\\out.txt","w",stdout); } template <class T> inline void read(T &x) { char c = getchar(); x = 0;while(!isdigit(c)) c = getchar(); while(isdigit(c)) { x = x * 10 + c - '0'; c = getchar(); } } LL n,m,a[3000],b[3000]; int main() { while(~scanf("%lld%lld",&n,&m)) { memset(a,0,sizeof a); memset(b,0,sizeof b); for(int i=0;i<2016;i++) a[i]=n/(LL)2016,b[i]=m/(LL)2016; for(int i=1;i<=n%2016;i++) a[i]++; for(int i=1;i<=m%2016;i++) b[i]++; LL ans=0; for(int i=0;i<2016;i++) for(int j=0;j<2016;j++) if(i*j%2016==0) ans=ans+a[i]*b[j]; cout<<ans<<endl; } return 0; }