您的位置:首页 > 其它

fzuoj Problem 2179 chriswho

2015-04-26 22:23 302 查看
http://acm.fzu.edu.cn/problem.php?pid=2179

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: