lightoj 1220

原创 2015年11月19日 15:07:42


1220 - Mysterious Bacteria
PDF (English) Statistics Forum
Time Limit: 0.5 second(s) Memory Limit: 32 MB

Dr. Mob has just discovered a Deathly Bacteria. He named itRC-01. RC-01 has a very strange reproduction system. RC-01 lives exactly xdays. Now RC-01 produces exactly p new deadly Bacteria where x = bp(where b, p are integers). More generally, x is a perfect pthpower. Given the lifetime x of a mother RC-01 you are to determine themaximum number of new RC-01 which can be produced by the mother RC-01.

Input

Input starts with an integer T (≤ 50),denoting the number of test cases.

Each case starts with a line containing an integer x.You can assume that x will have magnitude at least 2 and be within therange of a 32 bit signed integer.

Output

For each case, print the case number and the largest integerp such that x is a perfect pth power.

Sample Input

Output for Sample Input

3

17

1073741824

25

Case 1: 1

Case 2: 30

Case 3: 2


题意:给定x,让你找到一个最大的p,使得某个数的p次方正好是x。

分析:开始并不知道x还可能是负数,wrong了无数。。先说正数的情况,很自然的会想到把x进行因数分解,然后从每个质数的次方数中找到最大的p。多举几个例子就可以看出来最大的p就是每个质数的次方数的最小公倍数。。

对于负数的情况,显然负数的偶次幂是正数,如果算出来负数对应的正数的最大的p是偶数,那么应该把它不断除二直到它是奇数。


#include<bitset>
#include<map>
#include<vector>
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<stack>
#include<queue>
#include<set>
#define inf 0x3f3f3f3f
#define mem(a,x) memset(a,x,sizeof(a))

using namespace std;

typedef long long ll;
typedef pair<int,int> pii;

inline int in()
{
    int res=0;char c;
    while((c=getchar())<'0' || c>'9');
    while(c>='0' && c<='9')res=res*10+c-'0',c=getchar();
    return res;
}
const int N=50100;
bitset<N> vis;
int prime[N>>3];
int cnt[N];
int ans[N>>3];
int p;
int gcd(int a,int b)
{
    return b==0? a : gcd(b,a%b);
}
int main()
{
    for(int i=2;i<N;i++)
    {
        if(!vis[i])
        {
            prime[p++]=i;
            for(ll j = 1LL*i*i;j<N;j+=i) vis[j]=1;
        }
    }
    int T=in(),ii=1;
    ll n;
    while(T--)
    {
        scanf("%lld",&n);
        bool flag=0;
        if(n<0)n=-n,flag=1;

        mem(cnt,0);
        bool ok=1;
        int c=0;
        for(int i=0;i<p && 1LL*prime[i]*prime[i]<=n;i++)
        {
            if(n%prime[i]==0)
            {
                ans[c++]=prime[i];
                while(n%prime[i] == 0)
                {
                    cnt[prime[i]]++;
                    n /= prime[i];
                }
            }
        }
        if(n>1)
        {
            printf("Case %d: %d\n",ii++,1);
            continue;
        }

        int tmp = cnt[ans[0]];
        for(int i=1;i<c;i++)
        {
            tmp = gcd(tmp,cnt[ans[i]]);
        }
        if(flag && tmp%2==0)
        {
            while(tmp%2==0) tmp>>=1;
            printf("Case %d: %d\n",ii++,tmp);
            continue;
        }
        printf("Case %d: %d\n",ii++,tmp);

    }
    return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

LightOJ 1220 Mysterious Bacteria

Problem: LightOJ 1220 Mysterious Bacteria 题意:输入一个 x(2 <= |x| <= 2^32),求满足 x=b^p 的最大的 p(x,b,p都是整数) 暴力...

LightOJ 1220 Mysterious Bacteria(满足a^p = n的最大p)

题目链接: LightOJ 1220 Mysterious Bacteria 题意: 给一个三十二位有符号整数n求满足a^p = n的最大p。 分析: 一开始没注意到 within the ...

LightOJ 1220 Mysterious Bacteria(唯一分解定理+暴力)

题目链接:http://vjudge.net/contest/138024#problem/J 题目大意:求满足x=b^p 的最大的p的值。 解题思路:根据唯一分解定理先分解x,然后暴力枚举它的素...

LightOJ 1220 Mysterious Bacteria

题目链接:点我Dr. Mob has just discovered a Deathly Bacteria. He named it RC-01. RC-01 has a very strange r...

lightOJ 1220 Mysterious Bacteria

题目链接:http://lightoj.com/volume_showproblem.php?problem=1220 题目大意:给你一个整数n(可能为负数),让你求满足a^p=n的最大的p 思路...

友脉阅读器 v1.1 Build 1220

  • 2005-12-22 11:37
  • 1.79MB
  • 下载

ACM--公式--HDOJ 1220--Cube

Cube Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub...

杭电1220 Cube

Cube Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub...
  • z8110
  • z8110
  • 2016-01-11 13:21
  • 156

洛谷 P1220 关路灯

题目描述某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少)。老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯。为了给村里节...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)