[唯一分解定理+素数筛选]Mysterious Bacteria

题目大意:

给你一个数x = b^p,求p的最大值
分析:x=p1^a1 * p2^a2 . . .pn^an
x只有一个因子的p次幂构成
所以,本题所求实质上就是求 :a1,a2,a3,a4…an的最大公约数

本题有一个坑,就是x可能为负数,如果x为负数的话,x = b^q, q必须使奇数,所以将x转化为正数求得的解如果是偶数的话必须将其一直除2转化为奇数

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+10;
int pri[N];
bool vis[N];
void prime() {
   
	memset(vis,false,sizeof(vis));
	for(int i=2; i<=N; i++) {
   
		if(!vis[i]) {
   
			pri[++pri[0]]=i;
		}
		for(int j=1; j<=pri[0] && i*pri[j]<=N; j++) {
   
			vis[i*pri[j]]=true;
			if(i%pri[j]==0) {
   
				break;
			}
		}
	}
} // 欧拉筛 
int gcd(int a, int b) {
   
	return b ? gcd(b,a%b) : a; 
}

int main()
{
   
	prime();
	int t,cnt=0;
	scanf("%d", &t);
	while(t--) {
   
		bool flag=true;
		ll x,ans=0;        //int范围是-2^31——2^31-1,对于32bit signed interger会爆in
		scanf("%lld", &x);
		//x的值可能小于0 
		if(x<0) {
   
			x=-x;
			flag = false;
		}
		for(int i=1; i<=pri[0]&&pri[i]<=sqrt(x); i++) {
   
			if(x%pri[i]==0) {
   
				int k=0;
				while(x%pri[i]==0) {
   
					x/=pri[i];
					k++;
				}
				if(ans==0) {
   
					ans=k;//第一个 
				}
				else {
   
					ans=gcd(ans,k);
				}
			}
		}
		//如果没有被sqrt内的质数唯一分解,则说明还有有大于sqrt且在分解定理中一次的质数。 
		if(x>1) {
   
			ans=gcd(ans,1);
		}
		//若是负数,则不可能为偶数次方构成 
		if(!flag) {
   
			while(ans%2==0) {
   
				ans/=2;
			}
		}
		printf("Case %d: %d\n",++cnt,ans);	
	}
	return 0;
 } 
全部评论

相关推荐

03-01 21:45
中北大学 Python
孤蓝长空:请你说一下为什么你用websocket而不是http,请你说一下什么是rpc,为什么用rpc,你的rpc的传输协议是JSON,xml还是什么 请你描述一下你的鉴权流程(完整的) 我问的是第二个项目,随便问的哈哈哈
开工第一帖
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
10009次浏览 92人参与
# 你的实习产出是真实的还是包装的? #
1793次浏览 41人参与
# 米连集团26产品管培生项目 #
5809次浏览 214人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7499次浏览 43人参与
# 简历第一个项目做什么 #
31600次浏览 332人参与
# 重来一次,我还会选择这个专业吗 #
433408次浏览 3926人参与
# 巨人网络春招 #
11307次浏览 223人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187032次浏览 1122人参与
# 牛客AI文生图 #
21414次浏览 238人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152312次浏览 887人参与
# 研究所笔面经互助 #
118885次浏览 577人参与
# 简历中的项目经历要怎么写? #
310134次浏览 4199人参与
# AI时代,哪些岗位最容易被淘汰 #
63508次浏览 807人参与
# 面试紧张时你会有什么表现? #
30492次浏览 188人参与
# 你今年的平均薪资是多少? #
213040次浏览 1039人参与
# 你怎么看待AI面试 #
179929次浏览 1238人参与
# 高学历就一定能找到好工作吗? #
64317次浏览 620人参与
# 你最满意的offer薪资是哪家公司? #
76454次浏览 374人参与
# 我的求职精神状态 #
448010次浏览 3129人参与
# 正在春招的你,也参与了去年秋招吗? #
363300次浏览 2637人参与
# 腾讯音乐求职进展汇总 #
160604次浏览 1111人参与
# 校招笔试 #
470629次浏览 2964人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务