CSU 1416 Practical Number
2014-05-02 11:28
302 查看
原题链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1416
结论题,具体判断方法请点击这个网址。
筛素数是肯定的,但一开始定的范围太大了,想当然要筛到10^9的质数,但仔细想想,只要到sqrt(10^9)就可以了,最后的那一个质数是最后一步的比较,不用筛出来。
View Code
结论题,具体判断方法请点击这个网址。
筛素数是肯定的,但一开始定的范围太大了,想当然要筛到10^9的质数,但仔细想想,只要到sqrt(10^9)就可以了,最后的那一个质数是最后一步的比较,不用筛出来。
#include <stdio.h> #include <string.h> #include <iostream> using namespace std; #define N 100005 typedef long long LL; bool vis ; int p , k=0; void get_prime() { for(int i = 2; i < N; i++) { if(!vis[i]) { p[k++] = i; for(int j = i + i; j < N; j += i) vis[j] = 1; } } } bool ok(LL n) { if(n == 1) return 1; if(n&1) return 0; LL al = 1; for(int i = 0; i < k; i++) { if(n % p[i] == 0) { if(p[i] > al + 1 && p[i] != 2) return 0; LL s = 1; LL tmp = 1; while(n%p[i] == 0) { n /= p[i]; tmp *= p[i]; s += tmp; } al *= s; } } if(n > al + 1) return 0; return 1; } int main() { int t; LL n; get_prime(); cin >> t; while(t--) { cin >> n; if(ok(n)) cout << "Yes" << endl; else cout << "No" << endl; } return 0; }
View Code
相关文章推荐
- csu 1416 Practical Number(数论,结论题)
- CSU 1416 Practical Number 很有意思的数学题
- 1416 Shredding Company
- csu 1207: 镇管的难题
- csu 1049 第一次串讲——输入输出练习题
- csuoj 1215 稳定排序
- csu 1092 - 大尾巴狼
- POJ 1416 Shredding Company [暴力搜索 简单剪枝]
- Confidential----Ural_1416----次小生成树
- uva 1416 - Warfare And Logistics(dijkstra)
- UVA1416 Warfare And Logistics(LA4080)(最短路,5级)
- CSU1312:榜单(模拟)
- CSU-1307-CityTour+Dij+Kruskal
- CSU1323: ZZY and his little friends
- CSU Warm Up 2
- CSU 1356 Catch
- CSU 1374 Restore Calculation 数位DP
- CSU 1447: Mario Kart 背包+最短路
- poj 1416 Shredding Company
- CSUOJ 1010 Water Drinking