J - Mysterious Bacteria

2024-03-29 17:32
文章标签 bacteria mysterious

本文主要是介绍J - Mysterious Bacteria,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:https://cn.vjudge.net/contest/70017#problem/J

题目大意:给你一个数a,你要求出最大的一个数x,满足b的x次方等于a;

题解:根据算数基本定理,一个数可以分为a=p1^x1*p2^x2.......*pn^xn;所以算出x1,x2,.....,xn的最大公因子就行了,但是如果a为负数的情况下求出的x一定要为奇数,如果求出的是偶数,那么就要一直把x除以2,知道x为奇数。

代码:

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>using namespace std;const int maxn=1e6+5;
int prime[maxn+1],tag[maxn+1],cnt;void Prime()
{memset(tag,0,sizeof(tag));cnt=0;tag[0]=tag[1]=1;for(int i = 2; i<maxn; i++){if(!tag[i])prime[cnt++]=i;for(int j=0; j<cnt && prime[j]*i<maxn; j++){tag[i*prime[j]] = 1;if(i % prime[j]==0)break;}}
}int ss[maxn];int main()
{Prime();int T;int m=0;scanf("%d",&T);while(T--){long long int a,b;++m;scanf("%lld",&a);b=a;a=abs(a);int ans=0;for(int i=0;i<cnt&&prime[i]*prime[i]<=a;i++){if(a%prime[i]==0){int ii=0;while(a%prime[i]==0){a=a/prime[i];ii++;}if(ii!=0)ss[++ans]=ii;}}if(a>1){printf("Case %d: 1\n",m);}else{int num=ss[1];for(int i=2;i<=ans;i++){num=__gcd(num,ss[i]%num);}if(b<0){while(num%2!=1){num=num/2;}}printf("Case %d: %d\n",m,num);}}return 0;
}

 

这篇关于J - Mysterious Bacteria的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/859203

相关文章

Codeforces 400D Dima and Bacteria(Floyd+并查集)

题目链接:Codeforces 400D Dima and Bacteria 题目大意:给出n,m和k,表示有n个细菌,m种仪器和k种细菌,给出k种细菌的数量ci,然后每个细菌按照种类排成一排(所以有第i种细菌的序号从∑(1≤j≤i-1)cj + 1 到∑(1≤j≤i)cj);接下来给出m种仪器,有u,v,x三个值,表示说从可以在第u,v号细菌之间移动能量,代价为x。请帮助博士判断说这些细

Codeforces Contest 1043 problem D —— Mysterious Crime —— 删除前后缀使得n个串相同

Acingel is a small town. There was only one doctor here — Miss Ada. She was very friendly and nobody has ever said something bad about her, so who could’ve expected that Ada will be found dead in her

CF4D--Mysterious Present翻译

原题链接-- https://acs.jxnu.edu.cn/problem/CF4Dhttps://acs.jxnu.edu.cn/problem/CF4D  Mysterious Present  1000ms  65536K 描述: Peter decided to wish happy birthday to his friend from Australia and send

DAG上的动态规划——最长路CF4D Mysterious Present

CF4D Mysterious Present  用bool存储是否有边 题目链接 最长路例题 像这种DAG上的最短路 往往只需要记录是否存在边 故可以用bool节省空间,该题用bool就可以过 而用int就会MLE   // Decline is inevitable// Romance will last forever#include <bits/stdc++.h>#de

攻防世界re高手区 Mysterious WP

攻防世界re高手区 Mysterious WP 先查壳,帮助分析IDA32静态分析 先查壳,帮助分析 看完信息,丢进IDA32静态分析 IDA32静态分析 先shift+F12看看字符串看看有无提示信息 发现well done,于是大胆猜测,这段代码附近有flag出没,我们查看伪代码 果然有flag,只要解出v5,就是flag _itoa()是系统函数,百度,查到了它的

【Code Forces 320A】【二进制拆分】Raising Bacteria 细胞繁殖 每天倍增

【传送门】 http://codeforces.com/contest/579/problem/A 【题意】 在培养皿中,每个细胞每天会繁殖,数量*2 我们可以在任意天加入任意数量的细胞入培养皿中。 想要知道最少加入多少个细胞,可以使得有一天,培养皿中细胞的数量会恰好为x 【类型】 二进制拆分 【分析】 看样例就瞬间想到,这题是求二进制中有多少个1 然而倒着思考也很容易解释—

CF 4 D. Mysterious Present

题目:Mysterious Present 思路:类似于最长上升子序列,开始的时候自作聪明,以为是长和宽可以旋转的,= =  #include <cstdio>#include <iostream>#include <algorithm>#include <cmath>#include <cstring>#include <queue>using namespace st

LightOJ - 1220 Mysterious Bacteria 唯一分解定理

Mysterious Bacteria 题目描述 Dr. Mob has just discovered a Deathly Bacteria. He named it RC-01. RC-01 has a very strange reproduction system. RC-01 lives exactly x days. Now RC-01 produces exactly p new d

codeforces D.Dima and Bacteria (floyd+并查集) 好题

题目链接:Dima and Bacteria Dima took up the biology of bacteria, as a result of his experiments, he invented ktypes of bacteria. Overall, there are n bacteria at his laboratory right now, and the number