How many 0's?
2013-09-04 10:44
232 查看
Time Limit: 3sec Memory Limit:32MB Description A Benedict monk No. 16 writes down the decimal representations of all natural numbers between and including m and n, m ≤ n. How many 0's will he write down? Input Input consists of a sequence of lines. Each line contains two unsigned 32-bit integers m and n, m ≤ n. The last line of input has the value of m negative and this line should not be processed. Output For each line of input print one line of output with one integer number giving the number of 0's written down by the monk. Sample Input Copy sample input to clipboard 10 11 100 200 0 500 1234567890 2345678901 0 4294967295 -1 -1 Sample Output 1 22 92 987654304 3825876150 // Problem#: 1370 // Submission#: 2196597 // The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License // URI: http://creativecommons.org/licenses/by-nc-sa/3.0/ // All Copyright reserved by Informatic Lab of Sun Yat-sen University #include<stdio.h> #include<iostream> using namespace std; long long get_ans(long long u){ long long tmp=1,ans=1,k=u/10; while (k) { ans+=(k-1)*tmp; if (u-tmp*k*10+1>=tmp) ans+=tmp; else ans+=u-tmp*k*10+1; tmp*=10; k/=10; } return ans; } // 截断,先算出来从1----n 1----m-1 之后就可以知道一共有多少个0了 int main(){ long long ans,m,n; while (1) { cin>>m>>n; if (m<0) break; ans=get_ans(n); if (m>0) ans-=get_ans(m-1); cout<<ans<<endl; } return 0; } #include <iostream> using namespace std; long long pow10[]={1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000}; long long num0(long long n){ long long i; long long cnt=1+n/10; if(n<0) return 0; for(i=1; pow10[i]<=n/10; i++) { long long left=(n/10)/pow10[i]; long long mid =( n/pow10[i] )%10; long long rit =n%pow10[i]; if(mid==0) cnt+=(left-1)*pow10[i] + rit+1; else cnt+=left*pow10[i]; } return cnt; } int main() { long long m, n; while(cin>>m>>n && m>=0){ cout<<num0(n)-num0(m-1) <<endl; } return 0; } |
相关文章推荐
- 3286 How many 0's? 计算(n,m)中有多少个0
- LightOJ 1077 How Many Points?
- How Many Tables(并查集)
- NBUT1479:How many(DFS)
- (step5.1.3)hdu 1213( How Many Tables——1213)
- poj-3286-How many 0's?
- How Many Tables 1213
- HDU 1213 How Many Tables 并查集
- hdu 1213 How Many Tables
- (专题赛)How Many Tables
- HDU 1213 How Many Tables (并查集)
- How many 0's?(求区间某一个数的个数,好题)
- hdu 1213 How Many Tables(UFS 简单并查集)
- HDU1213——How Many Tables(并查集)
- 1006 How many?
- 最小表示法+hash hdu2609 How many
- HDU 1213 How Many Tables (简单的并查集)
- How Many Tables(并查集)
- poj3286 How many 0's? (数位DP)
- LightOJ 1077 How Many Points? (变种gcd)