LightOJ1220
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1220
题目大意:
给你一个 x,请求出一个最大的 p 使得 np = x(n为任意整数)。注意,x 有可能是负数。
解题思路:
算术基本定理。
求出 |x| 的唯一分解式,然后求各项指数的最大公因数。如果 x<0,那么还要事先将分解式的每一项的指数都转化成奇数(负数的偶数次方就变成正数了嘛)。
AC代码:
#include <iostream>
#include <cstdio>
#include <cmath> using namespace std;
typedef long long ll;
const int maxn = 1e5;
bool not_prime[maxn];
int prime[maxn];
int cnt;
void init(){
cnt=;
not_prime[]=not_prime[]=true;
for(ll i=;i<maxn;i++){
if(!not_prime[i]){
prime[cnt++]=i;
for(ll j=i*i;j<maxn;j+=i)
not_prime[j]=true;
}
}
}
int gcd(int a,int b){
if(b==) return a;
return gcd(b,a%b);
}
int ind[maxn];
int solve(ll x){
bool fu=false;
if(x<){
fu=true;
x=-x;
}
int tmp=;
for(int i=;i<cnt;i++){
if(x%prime[i]==){
ind[tmp]=; x/=prime[i];
while(x%prime[i]==){
ind[tmp]++;
x/=prime[i];
}
tmp++;
}
}
if(x>) ind[tmp++]=;
if(fu){
int ret=ind[];
while(ret%==) ret/=;
if(ret==) return ;
for(int i=;i<tmp;i++){
while(ind[i]%==) ind[i]/=;
ret=gcd(ret,ind[i]);
if(ret==) return ;
}
return ret;
}
else{
int ret=ind[];
if(ret==) return ;
for(int i=;i<tmp;i++){
ret=gcd(ret,ind[i]);
if(ret==)return ;
}
return ret;
}
}
int main(){
init();
ll x;
int T;
scanf("%d",&T);
for(int t=;t<=T;t++){
scanf("%lld",&x);
printf("Case %d: %d\n",t,solve(x));
}
return ;
}
LightOJ1220的更多相关文章
- Lightoj-1220
https://vjudge.net/problem/LightOJ-1220 求x=bp中最大的p,x可能为负数. 因数分解,x=p1x1*p2x2*...*pnxn x=(p1x1'*p2x2'* ...
- LightOJ1220 —— 质因数分解
题目链接:https://vjudge.net/problem/LightOJ-1220 1220 - Mysterious Bacteria PDF (English) Statistics ...
- LightOJ-1220 Mysterious Bacteria 唯一分解定理 带条件的最大公因数
题目链接:https://cn.vjudge.net/problem/LightOJ-1220 题意 给x=y^p,问p最大多少 注意x可能负数 思路 唯一分解定理,求各素因数指数的GCD 注意负数的 ...
- 毒瘤阅读题 LightOJ - 1220
Mysterious Bacteria LightOJ - 1220 https://vjudge.net/problem/LightOJ-1220 "Each case starts wi ...
- LightOJ - 1341 Aladdin and the Flying Carpet 唯一分解定理LightOJ 1220Mysterious Bacteria
题意: ttt 组数据,第一个给定飞毯的面积为 sss,第二个是毯子的最短的边的长度大于等于这个数,毯子是矩形但不是正方形. 思路: 求出 sss 的所有因子,因为不可能是矩形,所以可以除以 222, ...
随机推荐
- Condition的await()和signal()流程
介绍 Condition是j.u.c包下提供的一个接口. 可以翻译成 条件对象,其作用是线程先等待,当外部满足某一条件时,在通过条件对象唤醒等待的线程.ArrayBlockingQueue就是通过Co ...
- System Call
内容 设计系统调用,将系统的相关信息(CPU型号.操作系统的版本号.系统中的进程等类似于Windows的任务管理器的信息)以文本形式列表显示于屏幕,并编写用户程序予以验证. 思想 系统调用是应用程序和 ...
- 矩阵快速幂--HDU 6030 Happy Necklace
Problem Description Little Q wants to buy a necklace for his girlfriend. Necklaces are single string ...
- FileStream提示文件正在由另一进程使用的解决方法
文件正在由另一进程使用…… FileStream fs = new FileStream(strFilePath, FileMode.Open,FileAccess.Read,FileShare.Re ...
- 动态SQL各个标签作用以及注意事项详解
创建com.mybatis包,包含:UserMapper.xml和mybatis-config.xml UserMapper.xml代码: <?xml version="1.0&quo ...
- Re模块的方法补充
id_str = input("输入一个身份证号:") import re obj = re.compile(r"^([1-9]\d{16}[0-9x]|[1-9]\d{ ...
- springboot关于webmvc配置问题记录
在之前的文章(springboot配置静态资源访问路径)中说过,springboot默认的加载静态资源的地方是在resources目录下的static文件夹下,其实除了resources目录下得sta ...
- mybatis的关系映射
一.多对一的映射关系 举例:根据员工编号查询员工所在部门的部门信息 第一步,需要在多的一方也就是员工实体类中持有一的一方部门实体类的引用 第二步,在dao接口中声明方法 第三步,在mapper中实现该 ...
- Spring官网阅读(十一)ApplicationContext详细介绍(上)
文章目录 ApplicationContext 1.ApplicationContext的继承关系 2.ApplicationContext的功能 Spring中的国际化(MessageSource) ...
- java基础篇 之 非静态内部类
什么是非静态内部类: public class Outer { Outer() { System.out.println("我是外部类"); } class Inner { Inn ...