hdu1299 Diophantus of Alexandria
2012-10-10 10:54
417 查看
这题还是比较水的,因为稍微一整理就可以转化为求n的平方的因子个数的一半+1,因为n的平方的因子个数必定为奇数个;
可怜TLE,MLE了若干次,竟然把素数表打到了10^9次方,真是智商拙计。
code
可怜TLE,MLE了若干次,竟然把素数表打到了10^9次方,真是智商拙计。
code
#include <iostream> #include <cmath> #define LL __int64 using namespace std; const int MAXN = 40010; LL p[MAXN]; LL prime[MAXN]; LL pcnt; void GetPrime() { int i,j; for(i=2;i<=40000;i++) { if(!p[i]) { for(j=i*i;j<=40000;j+=i) p[j]=1; } } for(i=2;i<=40000;i++) { if(!p[i]) { prime[++pcnt]=i; } } } int Deliver(LL n) { LL i,ans=1,cnt; for(i=1;i<=pcnt && prime[i]*prime[i]<=n;i++) { if(n%prime[i]==0) { n/=prime[i]; cnt=1; while(n%prime[i]==0) { cnt++; n/=prime[i]; } // cout<<"--------------"<<endl; // cout<<prime[i]<<endl; // cout<<cnt<<endl; ans*=(cnt<<1)+1; } } if(n>1) ans*=3; return ans/2+1; } int main() { int cas; LL ans,n; GetPrime(); cin>>cas; for(int k=1;k<=cas;k++) { cin>>n; ans=Deliver(n); cout<<"Scenario #"<<k<<":"<<endl; cout<<ans<<endl; cout<<endl; } return 0; }
相关文章推荐
- Hdu 1299 Diophantus of Alexandria
- Hdu 1299 (Diophantus of Alexandria)
- HDU 1299 Diophantus of Alexandria
- HDU 1299 Diophantus of Alexandria
- HDU 1299 Diophantus of Alexandria(数论)
- HDU 1299 Diophantus of Alexandria
- HDU 1299 Diophantus of Alexandria
- HDU 1299 Diophantus of Alexandria 求因子个数
- hdu 1299 Diophantus of Alexandria
- HDU1299--Diophantus of Alexandria HDU(109)
- hdu 1299 Diophantus of Alexandria
- HDU1299-Diophantus of Alexandria
- hdu 1299 Diophantus of Alexandria
- Diophantus of Alexandria HDU - 1299(数论)
- hdu 1299 Diophantus of Alexandria(数学题)
- HDU 1299 Diophantus of Alexandria (公式变形 分解质因数)
- 【HDU】 1299 Diophantus of Alexandria
- HDU 1299 Diophantus of Alexandria
- hdu 1299 Diophantus of Alexandria (数论)
- HDU 1299 Diophantus of Alexandria