2016 湖南省省赛 Problem A: 2016

时间:2023-03-09 14:32:08
2016 湖南省省赛 Problem A: 2016

Problem A: 2016

Time Limit: 5 Sec  Memory Limit: 128 MB
Submit: 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 63
2016 2016
1000000000 1000000000

Sample Output

1
30576
7523146895502644

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 2016
using namespace std;
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
long long cur=;
long long n,m;
while(scanf("%lld%lld",&n,&m)!=EOF)
{
cur=;
for(int i=;i<=min((long long ),n);i++)
{
for(int j=;j<=min((long long ),m);j++)
{
if((i*j)%==)
{
//cout<<i<<" "<<j<<endl;
cur+=((n-i)/+)*((m-j)/+);
}
}
}
printf("%lld\n",cur);
}
return ;
}
/*
_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 */