1. 程式人生 > >湖南省第十二屆大學生計算機程式設計競賽 2016

湖南省第十二屆大學生計算機程式設計競賽 2016

1803: 2016

Time Limit: 5 Sec  Memory Limit: 128 MB
Submit: 537  Solved: 343
[Submit][Status][Web Board]

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

Source


我去湖南也會爆零-----------

程式碼:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define LL long long
int A[2020]; 
int shu[100];
int main()
{
	LL n,m;
	for (int i=1;i<=2016;i++)
	{
		if (2016%i==0)
		{
			for (int j=i;j<=2016;j+=i)
			A[j]=2016/i;
		}
	}
	while(~scanf("%lld%lld",&n,&m))
	{
		LL a=n/2016;
		LL b=n%2016;
		a++;
		if (b==0) a--;
		LL s=0;
		for (int i=1;i<=2016&&i<=n;i++)
		{
			s+=m/A[i]*a;
			if (i==b)
			a--;
		}
		printf("%lld\n",s);
	}
	return 0;
}