2282:The Counting Problem
keyword
整数 10進数 C++
概要
mからn(0
vector<int> solve(int n){ vector<int> ret(10,0); if(!n) return ret; int d = 1; int accum = 1; while(n){ ret[n%10] += accum; int st = n%10; if(!st) st = 10; for(int i=1; i<st; i++){ ret[i] += d; } accum += d*(n%10); int l = n%10; n /= 10; for(int i=0; i<10; i++){ ret[i] += (l?n:(n-1))*d; } d *= 10; } return ret; } int main(){ int x, y; while(x = readint(), y = readint(), y){ if(x>y) swap(x,y); vector<int> a = solve(x-1), b = solve(y); for(int i=0; i<10; i++){ printf("%d%c",b[i]-a[i], i==9?'\n':' '); } } return 0; }