hdu4937 Lucky Number,数论
来源:互联网 发布:windows改变图标 编辑:程序博客网 时间:2024/04/30 05:41
hdu4937 Lucky Number
比较简单的数论题。
把n分别减去3 4 5 6,剩下的为tn。
求出tn的所有约数,尝试所有约数是否满足基的条件即可。这样复杂度只有O(sqrt(n))。
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;#define Maxn 1100000int vt[Maxn],tp;long long pri[Maxn];long long fac[1010];int cnt[1010];long long ttn;int totf;long long ans;void sieve(int n){ int m=(int) sqrt(n+0.5); memset(vt,0,sizeof(vt)); tp=0; int i,j; for(i=2;i<=n;++i)if (!vt[i]){ pri[++tp]=i; //printf("%d\n",i); if (i>m) continue; for(j=i*i;j<=n;j+=i){ vt[j]=1; } } //printf(" tp=%d\n",tp);}void check(long long ff,long long mibase){ long long tmp=ttn; int fl=0; tmp=tmp/ff; long long t2; while(tmp){ t2=tmp%ff; if (t2<3||t2>6) return; tmp=tmp/ff; } ans++;}void dfs(int now,long long ff,long long mibase){ if (now==totf){ if (ff<mibase) return; check(ff,mibase); return; } int i; long long k=1; for(i=0;i<=cnt[now+1];++i){ dfs(now+1,ff*k,mibase); k*=fac[now+1]; }}void work(long long n,long long mibase){ int i; memset(cnt,0,sizeof(cnt)); totf=0; long long on=n; for(i=1;i<=tp;++i){ if (pri[i]*pri[i]>on) break; if (n%pri[i]==0) { fac[++totf]=pri[i]; while(n%pri[i]==0){ n/=pri[i]; ++cnt[totf]; } } } if (n!=1) { fac[++totf]=n; cnt[totf]=1; } dfs(0,1,mibase);}int main(){ int cas,tcas,i; long long n; scanf("%d",&cas); sieve(1001000); for(tcas=1;tcas<=cas;++tcas){ scanf("%I64d",&n); if (n>=3&&n<=6) { printf("Case #%d: -1\n",tcas); continue; } if (n<3) { printf("Case #%d: 0\n",tcas); continue; } ans=0; long long mibase; for(i=3;i<=6;++i){ long long tn=n-i; mibase=i+1; ttn=tn; work(tn,mibase); } printf("Case #%d: %I64d\n",tcas,ans); } return 0;}
0 0
- hdu4937 Lucky Number,数论
- 【HDU4937】Lucky Number(模拟)
- HDU4937:Lucky Number
- hdu 4937 Lucky Number(数论)
- HDU 4937 Lucky Number(数论)
- hdu 4937 Lucky Number 2014多校七 数论
- ZOJ 3233 Lucky Number(数论,容斥原理)
- HDU4937
- lucky number
- Lucky Number
- Lucky Number
- lucky number
- Lucky Number
- Lucky Number
- FOJ 2071 lucky number
- Lucky Number 2
- A. Nearly Lucky Number
- hdu 3346 Lucky Number
- Yii 不完全解决方案(一)
- 使用ubuntuliveCD重新安裝grub2
- wikioi1128 导弹拦截(理解思路)
- Android开源项目第二篇——工具库篇
- Hibernate和MySQL5.5创建表出错--'type=InnoDB'/schema export unsucessful
- hdu4937 Lucky Number,数论
- 编程之美之买票找零
- ios 局部变量,全局变量,成员变量
- 真正的大数据“圈内人”包含哪几种人
- Codeforces Round #249 (Div. 2) —— B
- LoadRunner中think time详解 .
- hdu 1597 find the nth digit
- Python语言(三)类型扩展
- 习题5-6 对称轴 UVa1595