zoukankan      html  css  js  c++  java
  • UVa 10622 (gcd 分解质因数) Perfect P-th Powers

    题意:

    对于32位有符号整数x,将其写成x = bp的形式,求p可能的最大值。

    分析:

    将x分解质因数,然后求所有指数的gcd即可。

    对于负数还要再处理一下,负数求得的p必须是奇数才行。

     1 #include <cstdio>
     2 #include <cmath>
     3 
     4 const int maxn = 46500;
     5 bool vis[maxn + 10];
     6 int prime[4810], cnt = 1;
     7 
     8 void Init()
     9 {
    10     int m = sqrt(maxn + 0.5);
    11     for(int i = 2; i <= m; ++i) if(!vis[i])
    12         for(int j = i * i; j <= maxn; j += i) vis[j] = true;
    13     for(int i = 2; i <= maxn; ++i) if(!vis[i]) prime[cnt++] = i;
    14     cnt--;
    15 }
    16 
    17 int gcd(int a, int b)
    18 {
    19     return b == 0 ? a : gcd(b, a % b);
    20 }
    21 
    22 int solve(int n)
    23 {
    24     int ans = 0;
    25     for(int i = 1; i <= cnt; ++i)
    26     {
    27         int k = 0;
    28         while(n % prime[i] == 0)
    29         {
    30             k++;
    31             n /= prime[i];
    32         }
    33         if(k)
    34         {
    35             if(k == 1) return 1;
    36             ans = gcd(k, ans);
    37         }
    38     }
    39     if(n > 1) return 1;
    40     return ans;
    41 }
    42 
    43 int main()
    44 {
    45     Init();
    46 
    47     int n;
    48     while(scanf("%d", &n) == 1 && n)
    49     {
    50         int ans = solve(n < 0 ? -n : n);
    51         if(n < 0) while((ans & 1) == 0) ans >>= 1;
    52         printf("%d
    ", ans);
    53     }
    54 
    55     return 0;
    56 }
    代码君
  • 相关阅读:
    testd3p
    my open音频的
    1
    one play
    ndk ffmpeg实践2
    ndk ffmpeg实践
    Mac ndk21 交叉ffmpeg目前
    ffmpeg交叉
    and cmake 链接库及播放例子 及读文件
    更正之前《登录小案例》密码错3次15分钟内不准登录
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/4207624.html
Copyright © 2011-2022 走看看