1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=3000; 5 6 /* 7 n m <=1e9 8 a*b=2016p (0<a<=n 0<b<=m) 9 的组合有多少个 10 那么也就是a*b%2016=0%2016 11 12 那么只要枚举2016*2016个就好了 13 */ 14 15 ll cnt1[maxn],cnt2[maxn]; 16 17 void solve(int n,ll c[]){ 18 int a=n/2016,b=n%2016; 19 for(int i=1;i<=b;i++)c[i]=a+1; 20 for(int i=b+1;i<=2016;i++)c[i]=a; 21 } 22 23 int main(){ 24 ll n,m; 25 26 while(cin>>n>>m){ 27 28 solve(n,cnt1); 29 solve(m,cnt2); 30 31 ll res=0; 32 33 for(int i=1;i<=2016;i++)for(int j=1;j<=2016;j++) 34 if((i*j%2016)==0){ 35 res+=cnt1[i]*cnt2[j]; 36 } 37 cout<<res<<endl; 38 } 39 return 0; 40 }