数字计数
2019-05-16 23:45 一只弱鸡丶 阅读(344) 评论(0) 编辑 收藏 举报#include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> using namespace std; #define ll long long #define re register inline void read(int &a) { a=0; int d=1; char ch; while(ch=getchar(),ch>'9'||ch<'0') if(ch=='-') d=-1; a=ch^48; while(ch=getchar(),ch>='0'&&ch<='9') a=(a<<3)+(a<<1)+(ch^48); a*=d; } ll ten[20],f[20],cnta[20],cntb[20],dig[20]; inline void init() { ten[0]=1; for(re int i=1;i<=15;i++) { f[i]=f[i-1]*10+ten[i-1]; ten[i]=10*ten[i-1]; } } inline void solve(ll x,ll *cnt) { int coutt=0; while(x) { dig[++coutt]=x%10; x/=10; } for(re int i=coutt;i>=1;i--) { for(re int j=0;j<=9;j++) cnt[j]+=f[i-1]*dig[i]; for(re int j=0;j<dig[i];j++) cnt[j]+=ten[i-1]; ll ans=0; for(re int j=i-1;j>0;j--) ans=ans*10+dig[j]; cnt[dig[i]]+=ans+1; cnt[0]-=ten[i-1]; } } int main() { ll a,b; scanf("%lld %lld",&a,&b); init(); solve(a-1,cnta); solve(b,cntb); for(re int i=0;i<=9;i++) printf("%lld ",cntb[i]-cnta[i]); return 0; }