uva 10622
http://vjudge.net/contest/140673#problem/H
求某个数字(最大到10^9,可为负值)写成完全p次方数的指数p是多少
分析: 先进行唯一分解,之后p整除各个素因子的指数,即求一组数的最大公约数.
//* _________________________________________________________________________________
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <cmath>
#include <vector>
#include <map>
using namespace std;
#define mem(A, X) memset(A, X, sizeof A)
#define pb(x) push_back(x)
#define foreach(e,x) for(__typeof(x.begin()) e=x.begin();e!=x.end();++e)
#define REP(i,l,u) for(int (i)=(int)(l);(i)<=(int)(u);++(i))
#define rep(i,l,u) for(int (i)=(int)(l);(i)>=(int)(u);--(i))
typedef long long LL;
typedef pair<long,long> pll;
const int mod=1e9+;
const int maxn=1e5+;
LL T;
void prime_resolve(LL mm,vector <LL> & mf,map<LL,LL> &fp)//mf m_factor, fp factor_power put all the 素因子(即素数)2 ... of m to the factor,且在factor按照从小到大存储.
{
mf.clear();
for(long long i=;i*i<=mm;i++)
{
if(mm%i==)
{
mf.push_back(i);
while(mm%i==) //除干净某个因子.
{
mm/=i;
fp[i]++;
}
}
}
if(mm!=)
{
mf.push_back(mm); //如果m 是素数 放进去
fp[mm]++;
}
}
LL gcd(const LL &a,const LL &b)
{ return b == ? a : gcd(b, a % b); }
int main()
{
freopen("in.txt","r",stdin);
while(scanf("%lld",&T)!=EOF&&T)
{
vector<LL> mf;
map<LL,LL> fp;
int flag=;
if(T<)
{
flag=;
T=-T;
}
prime_resolve(T,mf,fp);
vector<LL> v;
/*foreach(e,mp)
{
v.pb(it->second);
}*/
map<LL,LL> ::iterator it;
for(it=fp.begin();it!=fp.end();it++)
v.pb(it->second);
LL t=v[];
REP(i,,v.size()-)
{
t=gcd(t,v[i]);
}
if(flag)
while(t%==)
{
t=t/;
}
printf("%llu\n",t);
}
return ;
}
Implement Code
debug: 素数分解时int超出导致错误了,更改为LL.
uva 10622的更多相关文章
- UVA 10622 - Perfect P-th Powers(数论)
UVA 10622 - Perfect P-th Powers 题目链接 题意:求n转化为b^p最大的p值 思路:对n分解质因子,然后取全部质因子个数的gcd就是答案,可是这题有个坑啊.就是输入的能够 ...
- UVa 10622 (gcd 分解质因数) Perfect P-th Powers
题意: 对于32位有符号整数x,将其写成x = bp的形式,求p可能的最大值. 分析: 将x分解质因数,然后求所有指数的gcd即可. 对于负数还要再处理一下,负数求得的p必须是奇数才行. #inclu ...
- UVA 10622 Perfect P-th Powers
https://vjudge.net/problem/UVA-10622 将n分解质因数,指数的gcd就是答案 如果n是负数,将答案除2至奇数 原理:(a*b)^p=a^p*b^p #include& ...
- 紫书 习题 10-8 UVa 10622(gcd)
把这个数质因数分解然后求因子个数的gcd就ok了. 一些细节 (1)这道题的质因数不需要存下来,每一次做完取一次gcd就ok了 (2)判断奇偶用ans & 1的时候要加括号, 位运算要注意括号 ...
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
- UVA计数方法练习[3]
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...
随机推荐
- 《BI那点儿事》数据流转换——聚合
聚合转换可以像T-SQL中的函数GROUP BY, Average, Minimum, Maximum, 和 Count一样对数据进行聚合运算.在图中可以看到数据以SampleID分组,对TotalS ...
- equals
package abstractClasses; import java.time.LocalDate; /** * Created by xkfx on 2016/12/20. */ public ...
- AVKit & MediaPlayer简写
@import AVKit; @import AVFoundation; NSString *address = [[NSBundle mainBundle]pathForResource:@&quo ...
- AngularJS事件绑定的使用详解
本文和大家分享的主要是AngularJS中事件绑定相关知识点,希望通过本文的分享,对大家学习和使用AngularJS有所帮助. 1.绑定事件:表达式.事件方法名: 2.绑定点击事件实例:显示.隐藏页面 ...
- oracle连接本地数据库
连接方式: 通过SQL Developer进行连接: 通过sql plus 进行连接: SQL Developer进行连接1.安装Oracle 11g会自带一个叫做SQL Developer的工具,它 ...
- centos 安装 mongdb
1.安装MongoDB(安装到/usr/local) wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.2.4.t ...
- linux下mysql函数的详细案列
MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *pas ...
- Yii2框架安装(windows)
-->安装PHP环境Wamp集成环境,XAMMP等.-->安装Composerhttp://pan.baidu.com/s/1i3fejjvPS:安装过程中的有一个手动操作项选择php.e ...
- Redis-收藏文章
http://www.cnblogs.com/capqueen/p/HowToUseRedis.html Redis到底该如何利用? http://www.cnblogs.com/yangecnu/ ...
- HTC A510C电信手机刷机过程
HTC A510C电信手机刷机过程记录 Writed by Peter Hu(2014.6.7) ON WIN7_64 刷机需要的步骤: 1) 将S-ON加密保护式去掉,改成S-OFF模式,这样才能 ...