zoukankan      html  css  js  c++  java
  • POJ 1730 Perfect Pth Powers(唯一分解定理)

    http://poj.org/problem?id=1730

    题意:
    给出一个n,a=b^p,求出最大p值。

    思路:

    首先利用唯一分解定理,把n写成若干个素数相乘的形势。接下来对于每个指数求最大公约数,该公约数就是所能到达的最大p值。

    有一点要注意的是如果n为负数的话,如果当前p值为偶数,就一直除2直到p为奇数。

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<string>
     4 #include<cstring>
     5 #include<cmath>
     6 using namespace std;
     7 
     8 const int maxn = 70000;
     9 
    10 long long n;
    11 int vis[maxn];
    12 int prime[7000];
    13 int cnt;
    14 
    15 void get_prime()
    16 {
    17     cnt = 0;
    18     int m = sqrt(maxn + 0.5);
    19     for (int i = 2; i < maxn; i++)
    20     {
    21         if (!vis[i])
    22         {
    23             prime[cnt++] = i;
    24             for (int j = i; j < maxn; j += i)
    25                 vis[j] = 1;
    26         }
    27     }
    28 }
    29 
    30 
    31 int gcd(int a, int b)
    32 {
    33     if (a < b) return gcd(b, a);
    34     if (b == 0) return a;
    35     return gcd(b, a % b);
    36 }
    37 
    38 int main()
    39 {
    40     //freopen("D:\txt.txt", "r", stdin);
    41     get_prime();
    42     while (~scanf("%lld", &n) && n)
    43     {
    44         int flag = 0;
    45         int ans = 0;
    46         if (n < 0)
    47         {
    48             n = -n;
    49             flag = 1;
    50         }
    51         int flag2 = 1;
    52         for (int i = 0; i < cnt && n>1; i++)
    53         {
    54             if (n%prime[i] == 0)
    55             {
    56                 int ret = 0;
    57                 while (n%prime[i] == 0)
    58                 {
    59                     n /= prime[i];
    60                     ret++;
    61                 }
    62                 ans = gcd(ans, ret);
    63             }
    64         }
    65         if (n > 1)  ans = 1;
    66         if (flag)
    67         {
    68             while (ans % 2 == 0)  ans /= 2;
    69         }
    70         printf("%d
    ", ans);
    71     }
    72 }
  • 相关阅读:
    CodeForces 404C Ivan and Powers of Two
    CodeForces 433C Ryouko's Memory Note-暴力
    if not
    python3的print函数
    交叉熵
    tensorflow一个很好的博客
    关于第几维的问题
    更新软件
    tensorflow训练代码
    tensorflow的一些函数
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/6575583.html
Copyright © 2011-2022 走看看