- 「一本通 5.3 例 2」数字游戏
duipai
- 2025-6-3 13:22:17 @
#include<bits/stdc++.h>
using namespace std;
int ans[31][10];
void init(){
for(int i=0;i<=9;i++)ans[1][i]=1;
for(int i=1;i<=20;i++){//0~99...(i个9)
for(int j=0;j<=9;j++){//最后一个是j
for(int k=j;k<=9;k++){
ans[i][j]+=ans[i-1][k];
}
}
}
}
int getsum(int k){
if(!k)return 1;
int num[30]={};
int tk=k,sz=0;
while(tk){
num[++sz]=tk%10;
tk/=10;
}
if(!sz)sz++;
int sum=0,maxn=0;
for(int i=sz;i>=1;i--){
if(num[i]<maxn)break;
for(int j=maxn;j<num[i];j++)sum+=ans[i][j];
maxn=num[i];
if(i==1)sum++;
}
return sum;
}
int main(){
init();
int a,b;
while(cin>>a>>b){
cout<<getsum(b)-getsum(a-1)<<endl;
}
}
0 comments
No comments so far...
Information
- ID
- 166
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 6
- Tags
- # Submissions
- 28
- Accepted
- 10
- Uploaded By