HDU1299 素数分解
2015-08-01 18:23
344 查看
#include<cstdio> #include<cstring> using namespace std; bool isprime[100000]; int prime[10000],tot = 0,temp,n; long long ans; int main(){ memset(isprime,true,sizeof(isprime)); for(int i=2;i*i<=1000000000;i++) { if(isprime[i]) prime[tot++] = i; for(int j=i*i;j<100000;j+=i) isprime[j] = false;//数组越界可能导致意外错误 比如对isprime[100000]赋值会影响到prime[0]的值! } int T; scanf("%d",&T); for(int kase=1;kase<=T;kase++){ scanf("%d",&n); int N = n; ans = 1; for(int i=0;i<tot&&prime[i]*prime[i]<=N;i++) { temp = 0; while(n%prime[i]==0) temp++,n/=prime[i]; ans *= (2*temp+1); } if(n>1) ans*=3; if(ans%2==1) ans++; printf("Scenario #%d:\n%I64d\n\n",kase,ans/2); } }
题意:
求方程1/x+1/y=1/n的解的个数 1/3+1/2 与1/2+1/3看作是一组解。
分析:
1/x+1/y = 1/n 设y = n + k;
==>1/x + 1/(n+k)=1/n;
==>x = n^2/k + n;
因为x为整数,k就是n^2的约数。然后对其素因子分解就可以了。
对n^2分解,只需要对n分解就可以,这里我先打出 sqrt(n) 以内的所有素数,因为对任意数n,它的素因子最多有一个大于sqrt(n)。
相关文章推荐
- HDOJ 1795 The least one(素数打表)
- IOS开发UI基础文本属性Attributes
- 使用innotop监测mysql
- HashMap解决hash冲突的方法
- vs2010 和 vs2012同时安装遇到的问题
- C语言关键字详解
- IOS开发UI基础UIControl事件
- Appium for Mac 环境准备篇
- (个人开源)ffpanel --ffmpeg的GUI,让ffmpeg离开黑黑的命令行
- POJ 2828 Buy Tickets 线段树
- IOS开发UI基础UIImagePickerController的属性
- 小点滴——Lingo的非线性规划、最优化求解
- HDU杭电4883 TIANKENG’s restaurant
- 你们信不信一句Console.WriteLine就能让你的控制台程序失去响应
- winscp和putty提取固件教程
- CentOS6.5 安装配置drbd
- poj 3461 Oulipo kmp字符串匹配
- Juniper srx防火墙NAT配置
- CooMark网页颜色取色表
- hdoj1276士兵队列训练问题