lightoj 1220 - Mysterious Bacteria 【数学】
2016-03-19 11:19
387 查看
题目链接:lightoj 1220 - Mysterious Bacteria
题意:给定x=bp,求最大的p。
注意x可能为负数。
预处理质因子a[i](p[i]为该质因子的个数),p一定是所有p[i]的因子。最多为32,直接暴力就好了。
AC代码:
题意:给定x=bp,求最大的p。
注意x可能为负数。
预处理质因子a[i](p[i]为该质因子的个数),p一定是所有p[i]的因子。最多为32,直接暴力就好了。
AC代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <algorithm> #include <vector> #include <queue> #include <map> #include <stack> #define PI acos(-1.0) #define CLR(a, b) memset(a, (b), sizeof(a)) #define fi first #define se second #define ll o<<1 #define rr o<<1|1 using namespace std; typedef long long LL; typedef pair<int, int> pii; const int MAXN = 1e7 + 1; const int pN = 1e6;// <= 10^7 const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; void getmax(int &a, int b) {a = max(a, b); } void getmin(int &a, int b) {a = min(a, b); } void add(LL &x, LL y) { x += y; x %= MOD; } pii a[60]; int k; void getp(LL n) { k = 0; for(LL i = 2; i * i <= n; i++) { if(n % i == 0) { a[k].fi = i; int cnt = 0; while(n % i == 0) { n /= i; cnt++; } a[k++].se = cnt; } } if(n > 1) { a[k].fi = n; a[k++].se = 1; } } int gcd(int a, int b) { return b == 0 ? a : gcd(b, a%b); } bool judge(int p) { for(int i = 0; i < k; i++) if(a[i].se % p) return false; return true; } int main() { int t, kcase = 1; scanf("%d", &t); while(t--) { LL n; scanf("%lld", &n); bool flag = false; if(n < 0) { flag = true; n = -n; } getp(n); int ans; if(flag) { for(int i = 32; i >= 1; i--) { if(judge(i) && i & 1) { ans = i; break; } } } else { for(int i = 32; i >= 1; i--) { if(judge(i)) { ans = i; break; } } } printf("Case %d: %d\n", kcase++, ans); } return 0; }
相关文章推荐
- java语言程序设计课后题----复习题/Chapter21泛型
- Java注释常用标签实例
- curl监控站点响应时间
- POJ 2486 Apple Tree(树形dp)
- POJ 1579/hrbust 1029/哈理工oj 1029 Function Run Fun【记忆化搜索】
- 第三周C++练习之汉诺塔问题
- ES2015 - Generator function (2)
- Java 中的反射机制
- 返回函数和闭包
- 【English】英语暴力学习法
- javascript表单验证
- jQuery ajax - ajax() 方法
- 列的嵌套
- android“Binary XML file line # : Error inflating class” 什么二进制编译错误解决办法
- YTU 2203: 最小节点(线性表)
- Python中用pycurl监控http响应时间脚本分享
- n个人围城一圈报数,报数为3的人推出圈子,求剩下的人原序号是多少。
- Ubuntu下Essentia安装及配置
- C++中的异常处理
- 设计模式之抽象工厂模式