poj 1730Perfect Pth Powers(分解质因数)
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 16746 | Accepted: 3799 |
Description
We say that x is a perfect square if, for some integer b, x = b2. Similarly, x is a perfect cube if, for some integer b, x = b3. More generally, x is a perfect pth powerif, for some integer b, x = bp. Given an integer x you are to determine the largest p such that x is a perfect pth power.
Input
Output
Sample Input
17
1073741824
25
0
Sample Output
1
30
2
题意:给出一个整数x,把x写成x=a^p。求p最大是多少?
分析:把x分解质因数,x = a1^b1 * a2^b2 … ak^bk,则终于结果为b1,b2,…bk的最大公约数。
注意x有可能是负数。
假设x是负数,则要把求得的答案一直除以2,知道结果一个奇数,由于一个数的偶数次方不可能是负数。
#include <cstdio>
#include <cmath>
#include <cstring> const int N = 66700;
int is[N];
int prime[7000], prime_cnt; void get_prime() { //筛法预处理出素数
for(int i = 0; i < N; i++) is[i] = 1;
is[0] = is[1] = 0;
prime_cnt = 0;
int m = (int)sqrt(N + 0.5);
for(int i = 2; i < N; i++) {
if(is[i]) {
prime[prime_cnt++] = i;
if(i <= m) {
for(int j = i * i; j < N; j += i)
is[j] = 0;
}
}
}
} int gcd(int a, int b) { //求最大公约数
if(a < b) return gcd(b, a);
if(b == 0) return a;
return gcd(b, a % b);
} int main() {
get_prime();
long long n; //不知道当n为int时为什么会TLE
while(~scanf("%lld", &n) && n) {
int flag = 0;
if(n < 0) {
flag = 1;
n = -n;
}
int ans = 0;
for(int i = 0; i < prime_cnt && n > 1; i++) {
if(n % prime[i] == 0) {
int cnt = 0;
while(n % prime[i] == 0) {
n /= prime[i];
cnt++;
}
ans = gcd(ans, cnt);
}
}
if(n > 1) ans = gcd(ans, 1); //假设n不为1,则此时的n必为是一个素数
if(flag) {
while(ans % 2 == 0) ans /= 2;
}
printf("%d\n", ans);
}
return 0;
}
poj 1730Perfect Pth Powers(分解质因数)的更多相关文章
- UVa 10622 (gcd 分解质因数) Perfect P-th Powers
题意: 对于32位有符号整数x,将其写成x = bp的形式,求p可能的最大值. 分析: 将x分解质因数,然后求所有指数的gcd即可. 对于负数还要再处理一下,负数求得的p必须是奇数才行. #inclu ...
- POJ 1142:Smith Numbers(分解质因数)
Smith Numbers Time Limit: 1000MS Memory Limit: 10000K Total Submiss ...
- UVA 10622 - Perfect P-th Powers(数论)
UVA 10622 - Perfect P-th Powers 题目链接 题意:求n转化为b^p最大的p值 思路:对n分解质因子,然后取全部质因子个数的gcd就是答案,可是这题有个坑啊.就是输入的能够 ...
- POJ1811(SummerTrainingDay04-G miller-rabin判断素性 && pollard-rho分解质因数)
Prime Test Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 35528 Accepted: 9479 Case ...
- java分解质因数
package test; import java.util.Scanner; public class Test19 { /** * 分析:对n进行分解质因数,应先找到一个最小的质数k * 最小 ...
- 程序设计入门——C语言 第6周编程练习 1 分解质因数(5分)
1 分解质因数(5分) 题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. ...
- 【python】将一个正整数分解质因数
def reduceNum(n): '''题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5''' print '{} = '.format(n), : print 'Pleas ...
- light oj 1236 分解质因数
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=70017#problem/H 题意:求满足1<=i<=j<=n ...
- 【基础数学】质数,约数,分解质因数,GCD,LCM
1.质数: 质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数. 2.约数: 如 ...
随机推荐
- 58同城职位分类数据 json
{ "level0": {"0": "销售", "1": "客服", "2": ...
- es6总结(九)--Iterator & for of
- vue.js源码学习分享(二)
/** * Check if value is primitive//检查该值是否是个原始值 */ function isPrimitive (value) { return typeof value ...
- 【Visual Studio】工程类型选择win32还是x64 ?
1. 如果将Visual Studio的工程类型设置为win32,那么我们开发的程序既能在32位操作系统上运行,也能在64位操作系统上运行. 2. 如果将Visual Studio的工程类型设置为x6 ...
- Using a USB host controller security extension for controlling changes in and auditing USB topology
Protecting computer systems from attacks that attempt to change USB topology and for ensuring that t ...
- QQ客服代码,支持临时会话
<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=QQ号&site=qq&m ...
- Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) E DNA Evolution
DNA Evolution 题目让我们联想到树状数组或者线段树,但是如果像普通那样子统计一段的和,空间会爆炸. 所以我们想怎样可以表示一段区间的字符串. 学习一发大佬的解法. 开一个C[10][10] ...
- ELK之收集haproxy日志
由于HAProxy的运行信息不写入日志文件,但它依赖于标准的系统日志协议将日志发送到远程服务器(通常位于同一系统上),所以需要借助rsyslog来收集haproxy的日志.haproxy代理nginx ...
- Codeforces Gym 100431D Bubble Sort 水题乱搞
原题链接:http://codeforces.com/gym/100431/attachments/download/2421/20092010-winter-petrozavodsk-camp-an ...
- Java随机数技巧-新手篇
package 向家康; import java.util.concurrent.ThreadLocalRandom; public class 练习21 { public static void m ...