题意:给一段等差为m的m~n的等差序列,求这些数个位数的总和。
思路:我的思路比较乱,比较复杂,但总体还是找规律法,每个人想法不同,但殊途同归。
因为这题数值较大,又要用到循环,所以直接%的简单方法是会超时的。
我的思路:想一想,是不是序列中每10个数的个位数和一定是等于一个数x。(PS:可能是1+2+3+4+5+6+7+8+9+0或5+0+5+0+5+0+5+0+5+0)
好,求出这样的数的组数,乘上x,接下来解决剩下的数就可以了。
#include<stdio.h> #include<math.h> #include<string.h> int main() { int q,i,a[10000]; long long int n,m,sum,x,d,l,k,xh,ge; while(~scanf("%d",&q)) { while(q--) { memset(a,0,sizeof(a)); sum=0; scanf("%lld %lld",&n,&m); ge=m%10; for(i=0,d=m;i<10;i++,d+=m) { a[i]=d%10; sum+=a[i]; } l=n/(m*10); k=l*sum; xh=(n-l*m*10)/m; for(i=0;i<xh;i++) k+=a[i]; printf("%lld\n",k); } } }