sicily 1370 How many 0's? 递推 规律
2011-07-06 14:24
281 查看
//找规律 算m到n有数字中有几个0,包括m n //先设数组 dp[i]表示 i长度,第一个固定且非0的所有数字的0的个数 //基于dp从,dp和可以直接算 0到1000000 ,不包括100000 //剩下的数字由高位向低位算,分0和非0去暴力就可以了 #include <iostream> #include <cstdio> #include <cstring> using namespace std; long long m, n; long long result; long long dp[17]; long long act[17]; long long f( long long k ) { long long k2 = k; if( k == -1 ) return 0; long long result = 0; long long temp[34], m = 0; while( k ) { temp[m++] = k % 10; k /= 10; } result += 1; for( int i = 2;i <= m-1;i++ ) result += 9*dp[i]; result += (temp[m-1]-1) * dp[m]; for( int i = m-2;i >= 0;i-- ) { if( temp[i] > 0 ) result += ( act[i] + (temp[i])*dp[i+1] ); else result += k2 % act[i]+1 ; } return result; } int main() { act[0] = 1; for( int i = 1;i <= 16;i++ ) act[i] = act[i-1]*10; dp[1] = 0; dp[2] = 1; for( int l = 3;l <= 16;l++ ) { dp[l] = dp[l-1]*10 + act[l-2]; } while( scanf("%lld%lld",&m,&n ) && m >= 0 ) { //f(n); printf( "%lld\n",f(n)-f(m-1) ); } return 0; }
相关文章推荐
- POJ 3286 How many 0's?(数位dp)
- CodeForces-630 C. Lucky Numbers【规律递推】
- 3286 How many 0's? 计算(n,m)中有多少个0
- 【校内互侧】ZYF loves qaq (找规律+递推)
- HDU 2045 LELE的RPG难题 递推规律
- 递推:Number Sequence(mod找规律)
- 【数学题-递推找规律】BNU 4225 杨辉三角形
- HDU 4291 A Short problem 短问题 (递推,找规律)
- 【暑假测试2】A HDU 1021 Fibonacci Again(水:递推、找规律)
- Sicily 1121(递推)
- POJ3286:How many 0's?(数位DP)
- HDOJ 题目1165 Eddy's research II(递推,找规律)
- UVa 11038 How Many 0's?(数学计数)
- HDU 2050:折线分割平面(找规律,递推)
- 题目1006:ZOJ问题(递推规律)
- poj 3286 How many 0's?
- POJ 3286 How many 0's?
- hdu1290 - 献给杭电五十周年校庆的礼物 (递推求解)(找规律)
- HDU-2050 折线分割平面 找规律&递推
- sicily1029. Rabbit (高精度加法+公式递推)