338. 计数问题
题目链接https://www.acwing.com/problem/content/340/
题目:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int get_ct(int u){
int ct=0;
while(u){
ct++;
u/=10;
}
return ct;
}
int get(int u,int id){
int ct=get_ct(u);
int res=0;
for(int j=1;j<=ct;j++){
int k=pow(10,j-1);
int r=u%k;
int l=u/k/10;
int temp=u/k%10;
if(id) res+=l*k;
if(!id&&l) res+=(l-1)*k;
if(id==temp&&(id||l))
res+=r+1;
if(id<temp&&(id||l))
res+=k;
}
return res;
}
int main(){
int a,b;
while(cin>>a>>b){
if(!a&&!b) break;
if(a>b) swap(a,b);
for(int i=0;i<10;i++){
printf("%d ",get(b,i)-get(a-1,i));
}
printf("\n");
}
return 0;
}