• UVA 10622


    UVA 10622 - Perfect P-th Powers

    题目链接

    题意:求n转化为b^p最大的p值

    思路:对n分解质因子,然后取全部质因子个数的gcd就是答案,可是这题有个坑啊。就是输入的能够是负数,负数的情况比較特殊,p仅仅能为奇数。这时候是要把答案不断除2除到为奇数就可以。

    代码:

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    
    long long n;
    int prime[333333], vis[333333], m = 0;
    int gcd(int a, int b) {
    	if (b == 0) return a;
    	return gcd(b, a % b);
    }
    
    int solve() {
    	long long nn = n;
    	if (n < 0) n = -n;
    	int ans = 0;
    	for (int i = 0; i < m && prime[i] <= n; i++) {
    		int count = 0;
    		while (n % prime[i] == 0) {
    			count++;
    			n /= prime[i];
      		}
      		ans = gcd(ans, count);
     	}
      	if (ans == 0) ans = 1;
     	if (nn < 0) {
     		while (ans % 2 == 0) {
      			ans /= 2;		
    		}
      	}
     	return ans;
    }
    
    int main() {
    	for (int i = 2; i < 333333; i++) {
    		if (vis[i]) continue;
    		prime[m++] = i;
    		for (int j = i; j < 333333; j += i) {
    			vis[j] = 1;
    		}
     	}
    	while (~scanf("%lld", &n) && n) {
    		printf("%d
    ",  solve());
     	}
    	return 0;
    }


  • 相关阅读:
    网页性能分析
    vue学习图解
    px-em-rem单位转换
    呼啦圈(keyframes和transform结合)
    菜单栏鼠标经过伸缩效果
    携程transform放大效果
    浮动布局demo
    倒圆角艺术
    伪类分类
    ingress-nginx 添加https证书
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5117050.html
Copyright © 2020-2023  润新知