T: Problem B
128 Mb Submitted: 138 Solved: 43Description
已知两个正整数a和b,求在a与b之间(包含a和b)的所有整数的十进制表示中1出现的次数。
Input
多组数据(不超过100000组),每组数据2个整数a,b.(1≤a,b≤1000000).
Output
每组数据的答案占一行。
Sample Input
1 1010 1002 1
Sample Output
2201题目解析:这是一个极其简单的题,直接用打表就可以做代码:#include<iostream> using namespace std; int dp[1000005]; int getcnt(int x) { int cnt=0; while(x) { if(x%10==1) cnt++; x/=10; } return cnt; } void gettable() { for(int i=1;i<=1000000;i++) { dp[i]=getcnt(i)+dp[i-1]; } } int main() { gettable(); int a,b; while(cin>>a>>b&&a>0&&b>0) { cout<<(b>a?dp[b]-dp[a-1]:dp[a]-dp[b-1])<<endl; } return 0; }