看完这道题再来说难度吧!

P2602 [ZJOI2010] 数字计数

``` #include<bits/stdc++.h> using namespace std; long long l,r,dp[15][10][10]; void init(){ for(int i=0;i<10;i++) dp[1][i][i]=1; for(int i=2;i<=12;i++){ for(int j=0;j<10;j++){ for(int k=0;k<10;k++){ if(j==k) dp[i][j][k]=pow(10,i-1); for(int z=0;z<10;z++) dp[i][j][k]+=dp[i-1][z][k]; } } } } long long work(long long num,int u){ if(num==0) return !u; vector<int> c; while(num){ c.push_back(num%10); num/=10; } int last=0; long long ans=0; int len=c.size(); for(int i=len-1;i>=0;i--){ int x=c[i]; for(int j=(i==len-1);j<x;j++) ans+=dp[i+1][j][u]; ans+=x*last*pow(10,i); if(x==u) last++; if(!i) ans+=last; } for(int i=1;i<len;i++){ for(int j=(i!=1);j<10;j++) ans+=dp[i][j][u]; } return ans; } int main(){ scanf("%lld%lld",&l,&r); init(); for(int i=0;i<10;i++) printf("%lld ",work(r,i)-work(l-1,i)); return 0; }
by YuRuochen @ 2022-08-23 12:42:50


这是2602的代码
by YuRuochen @ 2022-08-23 12:43:10


两份代码相差无几
by YuRuochen @ 2022-08-23 12:43:24


@[Neutralized](/user/538609) @[EastPorridge](/user/230865) @[__Ultimium__](/user/424089) @[Dr_Gilbert](/user/574568) @[Hoshino_kaede](/user/547908)
by YuRuochen @ 2022-08-23 12:44:54


上一页 |