CodeForces - 1213C Book Reading (思维 数学)

CodeForces - 1213C Book Reading

题目

Polycarp is reading a book consisting of n pages numbered from 1 to n. Every time he finishes the page with the number divisible by m, he writes down the last digit of this page number. For example, if n=15 and m=5, pages divisible by m are 5,10,15. Their last digits are 5,0,5 correspondingly, their sum is 10.

Your task is to calculate the sum of all digits Polycarp has written down.

You have to answer q independent queries.


Input

The first line of the input contains one integer q (1≤q≤1000) — the number of queries.

The following q lines contain queries, one per line. Each query is given as two integers n and m (1≤n,m≤1016) — the number of pages in the book and required divisor, respectively.


Output

or each query print the answer for it — the sum of digits written down by Polycarp.


Sample Input

7
1 1
10 1
100 3
1024 14
998244353 1337
123 144
1234312817382646 13

Sample Output

1
45
153
294
3359835
0
427262129093995

题目大意:

输入m,n两个数,求出1-m中能整除n的数的尾数之和

题目分析:

若直接遍历1-n或者每次以m的倍数递增循环都会造成时间超限,
其实有一个简单的规律,一个数的倍数的尾数可以形成一个循环节
这里 我用二维数组 a[10][10] 来存放尾数的循环,

AC代码

#include <stdio.h>
int main()
{
	long long int n,m,i,ans=0,cish,h,sd=0,c;
	int q,j;
	scanf("%d",&q);
	int a[10][10]={{0},
				   {1,2,3,4,5,6,7,8,9,0},
				   {2,4,6,8,0},
				   {3,6,9,2,5,8,1,4,7,0},
				   {4,8,2,6,0},
				   {5,0},
				   {6,2,8,4,0},
				   {7,4,1,8,5,2,9,6,3,0},
				   {8,6,4,2,0},
				   {9,8,7,6,5,4,3,2,1,0}
				   };
	for(j=0;j<q;j++){
	scanf("%lld%lld" ,&n,&m );
		c=m%10;//看m的尾数是几,相应有下面的情况
		switch(c){
			case 1:
			case 3:
			case 7: 
			case 9: cish=10;h=45; break;//h是一个循环里 尾数的和。
			case 2:                     //cish是指一个循环有几个数,
			case 4:
			case 6:
			case 8: cish=5; h=20; break;
			case 5: cish=2; h=5;  break;
			case 0: cish=1; h=0;  break;		
		}
		int y;
		for(y=0;y<(n/m)%cish;y++)
		sd +=a[c][y];//除了可以整数循环的,还有剩下的 ,不够一次循环的,单独加起来。
		ans=(n/m)/cish*h+sd;
		printf("%lld\n",ans);
		ans=0;
		sd=0;//重置,开始下一次查询。
	}
	return 0;
}

我来要赞了,如果觉得解释还算详细,可以学到点什么的话,点个赞再走吧
欢迎各位路过的dalao 指点,提出问题。

发布了50 篇原创文章 · 获赞 50 · 访问量 2753

猜你喜欢

转载自blog.csdn.net/weixin_45691686/article/details/104231758