博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 10622 (gcd 分解质因数) Perfect P-th Powers
阅读量:5459 次
发布时间:2019-06-15

本文共 1256 字,大约阅读时间需要 4 分钟。

题意:

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

分析:

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

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

1 #include 
2 #include
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\n", ans);53 }54 55 return 0;56 }
代码君

 

转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4207624.html

你可能感兴趣的文章
MKReverseGeocoder 过时,IOS5中使用CLGeocoder
查看>>
@DataProvider Method 参数传递
查看>>
The Tao to Excellent 2
查看>>
Redis 命令
查看>>
Cocos2d-js 3.0 颜色变换(调整sprite/图片的色调)
查看>>
织梦仿站第一课
查看>>
java step1:基础知识3
查看>>
Hadoop 发行版本 Hortonworks 安装详解(二) 安装Ambari
查看>>
Vue系列之 => webpack结合vue使用
查看>>
JSR356标准Java WebSocket实现多人 or 单人聊天室demo
查看>>
PHP sha1()函数
查看>>
阿里云 EDAS-HSF 用户指南
查看>>
HashMap实现原理分析
查看>>
Symantec AntiVirus企业版联机客户机端卸载密码(转)
查看>>
jQuery中的ajax
查看>>
BPM实例分享:H3如何调试V3
查看>>
程序员讨论《黑客帝国》(一)真实与虚拟
查看>>
flex布局
查看>>
【C++ 拾遗】C++'s most vexing parse
查看>>
Codeforces 1C Ancient Berland Circus
查看>>