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, ...
随机推荐
- 基于Atlas实现mysql读写分离
一.实验环境 主机名IP地址 master192.168.200.111 slave192.168.200.112 atlas192.168.200.113 主从复制不再赘述,链接地址:授权Atlas ...
- CentOS7编译安装NodeJS
概述 在CentOS7下采用编译NodeJS二进制源码包的方式安装NodeJS 下载NodeJS安装包 你可以先下载NodeJS二进制源码安装包文件然后上传到CentOS系统,也可以通过wget命令直 ...
- 数学--数论--欧拉降幂--P5091 欧拉定理
题目背景 出题人也想写有趣的题面,可惜并没有能力. 题目描述 给你三个正整数,a,m,ba,m,ba,m,b,你需要求:ab mod ma^b \bmod mabmodm 输入格式 一行三个整数,a, ...
- 最长公共子串(Longest common substring)
问题描述: 给定两个序列 X=<x1, x2, ..., xm>, Y<y1, y2, ..., yn>,求X和Y长度最长的公共子串.(子串中的字符要求连续) 这道题和最长公共 ...
- Envoy 基础教程:使用 Unix Domain Socket(UDS) 与上游集群通信
Envoy Proxy 在大多数情况下都是作为 Sidecar 与应用部署在同一网络环境中,每个应用只需要与 Envoy(localhost)交互,不需要知道其他服务的地址.然而这并不是 Envoy ...
- Centos7下tomcat关闭异常问题
目录 出错原因 解决方法 出错原因 在阿里云服务器上买的轻量级应用服务器,装上了tomcat,访问tomcat自带的首页,8080端口,第一次启动成功了,关闭也正常,但在服务器重启后,或者第二次启 ...
- Anaconda 常用命令大全
帮助目录 检查conda版本 升级当前版本的conda 创建一个新环境 激活新环境 Linux,Mac: Windows: 列出所有的环境 切换环境(activate/deactivate) Linu ...
- 【Flink】使用之前,先简单了解一下Flink吧!
目录 Flink简单介绍 概述 无边界数据流和有边界数据流 技术栈核心组成 架构体系 重要角色 Flink与Spark架构概念转换 Flink简单介绍 概述 在使用Flink之前,我们需要大概知 ...
- Day_08【面向对象】扩展案例3_使用多态的形式创建缉毒狗对象,调用缉毒方法和吼叫方法
分析以下需求,并用代码实现: 1.定义动物类: 行为: 吼叫:没有具体的吼叫行为 吃饭:没有具体的吃饭行为 2.定义缉毒接口 行为: 缉毒 3.定义缉毒狗:犬的一种 行为: 吼叫:汪汪叫 吃饭:狗啃骨 ...
- [csu/coj 1619] 递归
题意:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1619 思路:由于式子具有递归的性质,考虑递归解,中间结果会超64位int,需用大数.另外自己 ...