a,b可以表示成a=x*2016+i b=y*2016+j;
a*b=x*y*2016^2+x*2016*j+y*2016*i+i*j; 其中除了i*j这一项,其他的项都是2016的倍数; 事先建立两个数组保存两个区间中i,j的数目 则在2016*2016中找i*j%2016=0的i,j; 将起相乘累加即可#include#define LL long longusing namespace std;const int lin=2016;LL a[lin],b[lin];int main(){ int n,m; while(~scanf("%d%d",&n,&m)){ for(int i=0;i