poj 1730 Perfect Pth Powers
这个有2种方法。
一种是通过枚举p的值(p的范围是从1-32),这样不会超时,再就是注意下精度用1e-8就可以了,还有要注意负数的处理……
- #include<iostream>
- #include<stdio.h>
- #include<algorithm>
- #include<cmath>
- #include<iomanip>
- #include<string>
- using namespace std;
- int fun(double n)
- {
- int p=,f=;
- if(n<)
- {
- p=;
- f=;
- n=-n;
- }
- for(;p>=;p-=f)
- {
- double a=pow(n,1.0/p);
- long t1=a;
- long t2=a+;
- if(a-t1<=1e-||t2-a<=1e-)
- break;
- }
- return p;
- }
- int main()
- {
- int x,p;
- while(cin>>x&&x)
- {
- p=fun(x);
- cout<<p<<endl;
- }
- return ;
- }
第二种方法就是分解素数因子,求出因子的指数的最大公约数就是答案了,但是我这测试没错,提交超时……
- #include<iostream>
- #include<stdio.h>
- #include<algorithm>
- #include<vector>
- #include<cmath>
- #include<iomanip>
- #include<string>
- using namespace std;
- int prime[],a[];
- void init()
- {
- int i,j,k=;
- for(i=;i<=;i++)
- {
- if(!a[i])
- {
- prime[k++]=i;
- for(j=i+i;j<=;j+=i)
- a[j]=;
- }
- }
- }
- int gcd(int a,int b)
- {
- int c;
- if(a<b) swap(a,b);
- while(b)
- {
- c=a;
- a=b;
- b=c%b;
- }
- return a;
- }
- int main()
- {
- int n,i,j;
- bool flag;
- init();
- while(scanf("%d",&n),n)
- {
- flag=;
- if(n<)
- {
- flag=;
- n=-n;
- }
- vector<int> key;
- for(i=;prime[i]*prime[i]<=n;i++)
- {
- if(n%prime[i]==)
- {
- int c=;
- for(;n%prime[i]==;n/=prime[i],c++);
- key.push_back(c);
- }
- }
- if(n>) key.push_back();
- int sum=key[];
- for(i=;i<key.size();i++)
- sum=gcd(sum,key[i]);
- if(flag)
- {
- while(sum%==)
- sum/=;
- }
- printf("%d\n",sum);
- }
- return ;
- }
poj 1730 Perfect Pth Powers的更多相关文章
- POJ 1730 Perfect Pth Powers(暴力枚举)
题目链接: https://cn.vjudge.net/problem/POJ-1730 题目描述: We say that x is a perfect square if, for some in ...
- POJ 1730 Perfect Pth Powers(唯一分解定理)
http://poj.org/problem?id=1730 题意:给出一个n,a=b^p,求出最大p值. 思路: 首先利用唯一分解定理,把n写成若干个素数相乘的形势.接下来对于每个指数求最大公约数, ...
- UVA 10622 - Perfect P-th Powers(数论)
UVA 10622 - Perfect P-th Powers 题目链接 题意:求n转化为b^p最大的p值 思路:对n分解质因子,然后取全部质因子个数的gcd就是答案,可是这题有个坑啊.就是输入的能够 ...
- Perfect Pth Powers poj1730
Perfect Pth Powers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16383 Accepted: 37 ...
- [暑假集训--数论]poj1730 Perfect Pth Powers
We say that x is a perfect square if, for some integer b, x = b 2. Similarly, x is a perfect cube if ...
- Kattis之旅——Perfect Pth Powers
We say that x is a perfect square if, for some integer b, x = b2. Similarly, x is a perfect cube if, ...
- UVa 10622 (gcd 分解质因数) Perfect P-th Powers
题意: 对于32位有符号整数x,将其写成x = bp的形式,求p可能的最大值. 分析: 将x分解质因数,然后求所有指数的gcd即可. 对于负数还要再处理一下,负数求得的p必须是奇数才行. #inclu ...
- uva10622 Perfect P-th Powers
留坑(p.343) 完全不知道哪里有问题qwq 从31向下开始枚举p,二分找存在性,或者数学函数什么的也兹辞啊 #include<cstdio> #include<cstring&g ...
- UVA 10622 Perfect P-th Powers
https://vjudge.net/problem/UVA-10622 将n分解质因数,指数的gcd就是答案 如果n是负数,将答案除2至奇数 原理:(a*b)^p=a^p*b^p #include& ...
随机推荐
- Debug Intro
The ABAP Debugger is used tool to execute and analyze programs line by line. Using it we can check t ...
- Linux C 程序 信号及信号的处理(19)
信号及信号的处理 1.Linux信号的介绍 信号是一种软件中断.Linux系统中根据POSIX标准扩展的信号机制. 1.信号来源 1.硬件方式 1.当用户按下某个键, ...
- 版本控制器 (Svn,Git)
Svn: 集中式版本控制器,首先开发者在开始新一天的工作之前必须从服务器获取代码,然后进入自己的分支开发,开发完成后把自己的分支合并到主分支上进行提交,解决冲突.所有的版本信息都放在服务器上.如果脱离 ...
- 用MySQL log调试程序
打开my.ini文件 在[mysqld]的下面加上log = c:/mysql_query.log.txt重启mysql 以后你用可以用editplus查看你运行的sql了,不用在程序里一句句的用lo ...
- Android emulator warning----Emulator window was out of view and was recentred
最近在打开Android emulator时,总会提示“Emulator window was out of view and was recentred ”,然后无法打开模拟器,但是可以使用Win7 ...
- Excel中的宏--VBA的简单例子
第一步:点击录制宏 第二步:填写宏的方法名 第三步:进行一系列的操作之后,关闭宏 第四步:根据自己的需要查看,修改宏 第六步:保存,一般是另存为,后缀名为.xlsm,否则宏语言不能保存. 到此为止恭喜 ...
- 原始套接字的简单tcp包嗅探
原始套接字 sock_raw = socket(AF_INET , SOCK_RAW , IPPROTO_TCP); while(1) { data_size = recvfrom(sock_raw ...
- Ztack学习笔记(3)-系统启动分析
一 系统启动 //OSAL.cvoid osal_start_system( void ) { #if !defined ( ZBIT ) && !defined ( UBIT ) f ...
- [转]MAC下JDK版本的切换
系统里之前先安装里jdk6的,后台又装里7,安装完成后,java -version 版本是7, 导致我eclipse打不开,一开始的做法是,把7的版本给删除掉. 删除的方法也很简单,在命令行中到 / ...
- Xaml代码格式设置
Xaml格式化后属性分行显示的设置方法为 找到Tools->Text Editor->Xaml->Formatting->Spacing,选择Position each att ...