• Lightoj-1220


    https://vjudge.net/problem/LightOJ-1220

    求x=bp中最大的p,x可能为负数。

    因数分解,x=p1x1*p2x2*...*pnxn

                      x=(p1x1'*p2x2'*...*pnxn')q

      如果x是正数的话,那么这个q最大就是gcd(x1,x2...xn),也就是答案了。

      如果x是负数,那么q显然应该是个奇数,让求得的q不断/2直至为奇数即可。

      题目明明说了x的范围在32为之内搞不懂为什么开LL才能过c。

      

     1 #include<iostream>
     2 #include<cstring>
     3 #include<queue>
     4 #include<cstdio>
     5 #include<stack>
     6 #include<set>
     7 #include<map>
     8 #include<cmath>
     9 #include<ctime>
    10 #include<time.h> 
    11 #include<algorithm>
    12 using namespace std;
    13 #define mp make_pair
    14 #define pb push_back
    15 #define debug puts("debug")
    16 #define LL long long 
    17 #define pii pair<int,int>
    18 #define eps 1e-12
    19 
    20 int gcd(int a,int b){
    21     return b==0?a:gcd(b,a%b);
    22 }
    23 
    24 int main()
    25 {
    26     int n,m,i,j,k,t;
    27     int cas=0;
    28     cin>>t;
    29     while(t--){
    30         int p=0;
    31         LL x;
    32         bool fs=0;
    33         scanf("%lld",&x);
    34         if(x<0) x=-x,fs=1;
    35             int m=sqrt(x);
    36             for(i=2;i<=m;++i){
    37                 if(x%i==0){
    38                     int tmp=0;
    39                     while(x%i==0){
    40                         tmp++;
    41                         x/=i;
    42                     }
    43                     p=gcd(p,tmp);
    44                 }
    45             }
    46             if(!p) p++;
    47             if(fs) {
    48                 while(p%2==0) p/=2;
    49             }
    50             printf("Case %d: %d
    ",++cas,p);
    51     }
    52     return 0; 
    53 }
  • 相关阅读:
    5-29
    5-28
    5-27
    -5-26
    5-25
    5-24
    5-21
    RabbitMQ消息中间件极速入门与实战
    细说java多线程之内存可见性
    全面解析java注解
  • 原文地址:https://www.cnblogs.com/zzqc/p/8973228.html
Copyright © 2020-2023  润新知