首页 > 代码库 > 2016 湖南省省赛 Problem A: 2016
2016 湖南省省赛 Problem A: 2016
Problem A: 2016
Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 296 Solved: 171
Description
给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量:
1. 1≤a≤n,1≤b≤m;
2. a×b 是 2016 的倍数。
Input
输入包含不超过 30 组数据。
每组数据包含两个整数 n,m (1≤n,m≤109).
Output
对于每组数据,输出一个整数表示满足条件的数量。
Sample Input
32 632016 20161000000000 1000000000
Sample Output
1305767523146895502644
HINT
/*真心菜,就水出来一个题......任何一个数都能表示成n=a*2016+i,m=b*2016+j;n*m=a*b*2016^2+a*2016*j+b*2016*i+i*j;如果i*j是2016的倍数的话,那么n*m一定是2016的倍数,这样在2016*2016的规模中遍历出符合i*j%2016=0的数,按照n中有多少个这样的i,m中有多少这样的j,然后相乘,累加起来就得到的区间中所有的数*/#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#define MAXN 2016using namespace std;int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); long long cur=0; long long n,m; while(scanf("%lld%lld",&n,&m)!=EOF) { cur=0; for(int i=1;i<=min((long long )2016,n);i++) { for(int j=1;j<=min((long long )2016,m);j++) { if((i*j)%2016==0) { //cout<<i<<" "<<j<<endl; cur+=((n-i)/2016+1)*((m-j)/2016+1); } } } printf("%lld\n",cur); } return 0;}/* _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---‘\____ .‘ \\| |// `. / \\||| : |||// / _||||| -:- |||||- | | \\\ - /// | | | \_| ‘‘\---/‘‘ | | \ .-\__ `-` ___/-. / ___`. .‘ /--.--\ `. . __ ."" ‘< `.___\_<|>_/___.‘ >‘"". | | : `- \`.;`\ _ /`;.`/ - ` : | | \ \ `-. \_ __\ /__ _/ .-` / /======`-.____`-.___\_____/___.-`____.-‘====== `=---=‘^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ I have a dream!A AC deram!! orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz*/
2016 湖南省省赛 Problem A: 2016
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。