fzuoj Problem 2179 chriswho
2015-04-26 22:23
302 查看
http://acm.fzu.edu.cn/problem.php?pid=2179
Problem 2179 chriswho
View Code
Problem 2179 chriswho
Accept: 57 Submit: 136 Time Limit: 10000 mSec Memory Limit : 327680 KB
//#pragma comment(linker, "/STACK:102400000,102400000") #include<cstdio> #include<ctype.h> #include<algorithm> #include<iostream> #include<cstring> #include<vector> #include<cstdlib> #include<stack> #include<cmath> #include<queue> #include<set> #include<map> #include<ctime> #include<string.h> #include<string> #include<sstream> #include<bitset> using namespace std; #define ll long long #define ull unsigned long long #define eps 1e-11 #define NMAX 1000005 #define MOD 1000000007 #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 #define PI acos(-1) template<class T> inline void scan_d(T &ret) { char c; int flag = 0; ret=0; while(((c=getchar())<'0'||c>'9')&&c!='-'); if(c == '-') { flag = 1; c = getchar(); } while(c>='0'&&c<='9') ret=ret*10+(c-'0'),c=getchar(); if(flag) ret = -ret; } ll dp[20][2525][50]; int mp[2520],ha[50],lcm[11][2520],shu[20]; int gcd(int x, int y) { return y?gcd(y,x%y):x; } void init() { memset(dp,-1,sizeof(dp)); int nct = 1; for(int i = 1; i <= 2520; i++) if(2520%i == 0) { ha[nct] = i; mp[i] = nct++; } for(int i = 0;i <= 9; i++) for(int j = 1; j <= 2520; j++) lcm[i][j] = (i==0)?j:i*j/gcd(i,j); } ll dfs(int yu, int lc, int len,int limit) { if(len == 0) return yu%ha[lc] == 0; if(~dp[len][yu][lc] && !limit) return dp[len][yu][lc]; ll ans = 0; int p = limit?shu[len]:9; for(int i = p; i >= 0; i--) { ans += dfs((yu*10+i)%2520, mp[lcm[i][ha[lc]]],len-1, limit && i == shu[len]); } if(!limit) dp[len][yu][lc] = ans; return ans; } int main() { #ifdef GLQ freopen("input.txt","r",stdin); // freopen("o4.txt","w",stdout); #endif // GLQ int cas; ll n; init(); scanf("%d",&cas); while(cas--) { scanf("%I64d",&n); int nct=1; while(n) { shu[nct++] = n%10LL; n /= 10LL; } // cout<<nct<<endl; printf("%I64d\n",dfs(0,1,nct-1,1)-1); } return 0; }
View Code
相关文章推荐
- SZUOJ-Problem(J16):Bright stars最小生成树
- Problem(A18):Climb Well In SZUOJ青蛙爬井
- fzuoj Problem 2177 ytaaa
- FZU 2179 chriswho(数位DP)
- fzuoj Problem 2182 水题
- FZUOJ Problem 2243 Daxia like uber (最短路+汗水)
- FZUOJ Problem 2200 cleaning DP
- FZUOJ Problem 2188 过河I(BFS啊)
- fzuoj 2218 Simple String Problem(状态压缩dp)
- FZUOJ Problem 2178 礼品配送
- FZUOJ Problem 2178 礼物分配
- FZUOJ Problem-1010 Beavergnaw (数学公式水题)
- fzuoj Problem 2129 子序列个数
- fzuoj Problem 2236 第十四个目标(树状数组+dp)
- fzuoj 2218 Simple String Problem(状态压缩dp)
- SZUOJ-Problem(A60):Roads
- uva 101 The Blocks Problem
- HDU 1000 A+B Problem
- ZOJ Problem Set - 2186 Keep on Truckin'【模拟】
- Project Euler Problem 11: Largest product in a grid