HDOJ 3652 B-B-number
2013-04-27 12:23
197 查看
题目意思 1到N 不包含 13 作为字串并且 是13的倍数
#include<iostream> #include<stdio.h> #include<cstring> #include<algorithm> using namespace std; long long N,arr[32],dp[32][3][13]; long long DFS( int pos,int flag,int t,int limit ) { if( pos == -1 ) { if( flag == 2 && t == 0 )return 1; return 0; } if( !limit && dp[pos][flag][t] != -1 ) return dp[pos][flag][t]; int end = limit?arr[pos]:9;long long ans = 0; for( int i = 0; i <= end; i++ ) { int tab = flag; if( tab == 0 && i == 1 )tab = 1; if( tab == 1 && i == 3 )tab = 2; if( tab == 1 && i == 1 )tab = 1; if( tab == 1 && i != 1 && i != 3 )tab = 0; int num = (t*10+i)%13; ans += DFS( pos-1,tab,num,limit&&(i==arr[pos]) ); } if( !limit )dp[pos][flag][t] = ans; return ans; } long long work( long long num ) { int k = 0; while( num ) { arr[k++] = num%10; num /= 10; } memset( dp,-1,sizeof(dp) ); return DFS( k-1,0,0,1 ); } int main( ) { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); while( scanf("%I64d",&N) != EOF ) printf("%I64d\n",work(N)); return 0; }
相关文章推荐
- 【DP】 HDOJ 3652 B-number
- HDOJ 3652 B-number
- 【HDOJ 3652】B-number
- [HDOJ3652]B-Number(数位dp)
- HDOJ 3652 B-number
- HDOJ3652 B-number
- 【HDOJ 3652】B-number
- HDOJ 3652 B-number(数位DP入门)
- hdoj 3652 B-number 【数位dp】
- HDOJ 3652 B-number (数位DP)
- 【HDOJ】3652 B-number
- hdoj 3652 B-number
- hdoj 3555 Bomb/ hdoj 3652 B-number 数位DP 初解禁!!
- hdu 3652 B-number(数字dp)
- HDU 3652 B-number
- HDU 3652--B-number(数位dp)
- (线段树)hdoj1394-Minimum Inversion Number 逆序对
- HDU 3652 B-number(*数位DP)
- HDOJ-4006/(大连网赛1006)- The kth great number 剖析
- HDOJ 1394 Minimum Inversion Number