E.Book Reading(codeforces1213/C)

题意:给一段等差为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);
        }
    }
}
View Code
原文地址:https://www.cnblogs.com/DreamingBetter/p/11625330.html