P4999 烦人的数学作业

原题链接

题解

code

#include<bits/stdc++.h>
#define ll  long long
using namespace std;
const ll mod=1e9+7;
ll tag[25]={0};
ll a[25]={0};
ll f(ll now)
{
    ll sum=0,pre=0;
    ll len=1;
    while(now)
    {
        ll top=now%10;
        for(int i=0;i<top;i++) sum=(sum+i*a[len-1]%mod+tag[len-1])%mod;
        sum+=top*(pre+1);
        sum%=mod;
        pre=(top*a[len-1]+pre)%mod;
        len++;
        now/=10;
    }
    return sum%mod;
}
int main()
{
    a[0]=1;
    for(int i=1;i<=19;i++)  a[i]=a[i-1]*10LL%mod;

    tag[0]=0;
    tag[1]=45;
    for(int i=2;i<=19;i++)
    {
        tag[i]=10LL*tag[i-1]%mod+(45LL*a[i-1]%mod);
        tag[i]%=mod;
    }

    ll t;
    cin>>t;
    while(t--)
    {
        ll a,b;
        cin>>a>>b;
        cout<<(f(b)%mod-f(a-1)%mod+mod)%mod<<endl;
    }
    return 0;
}

posted @   纯粹的  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示