HDOJ-1905-Pseudoprime numbers 解题报告
来源:互联网 发布:c语言编程软件百度云 编辑:程序博客网 时间:2024/06/06 05:48
快速幂和判断素数。题意:如果a^p mod p = a mod p且p不为素数,那么称p为基于a的伪素数,现在给你p和a,问p是不是基于a的伪素数。
我的解题思路:很简单,判断一下p是否为素数,然后快速幂求a^p mod p的值就行了,由于a比p小,所以a mod p肯定还是a,就不用判断是否等于a mod p了,另外必须要用64位整型,不然会溢出。
我的解题代码:
#include <cstdio>#include <cstdlib>#include <cstring>#include <cctype>#include <cmath>#include <algorithm>using namespace std;typedef long long Long;Long a, p;bool IsPrime(Long x);Long FastPow(Long base, Long n, Long mod);int main(){ while (~scanf("%lld %lld", &p, &a) && a && p) { if (!IsPrime(p) && FastPow(a, p, p) == a) { puts("yes"); } else { puts("no"); } } return 0;}bool IsPrime(Long x){ Long cnt = (Long)sqrt(x + 0.5) + 1; for (Long i=2; i<cnt; ++i) { if (x % i == 0) return false; } return x == 1 ? false : true;}Long FastPow(Long base, Long n, Long mod){ Long ans = 1; base %= mod; while (n) { if (n & 1) { ans *= base; ans %= mod; } base *= base; base %= mod; n >>= 1; } return ans;}
0 0
- HDOJ-1905-Pseudoprime numbers 解题报告
- hdoj 1905 Pseudoprime numbers
- HDOJ-1905 Pseudoprime numbers
- HDOJ 1058 Humble Numbers解题报告【DP】
- HDOJ 题目1905 Pseudoprime numbers(快速幂)
- hdu 1905 Pseudoprime numbers
- hdu 1905 Pseudoprime numbers
- 【HDU】 1905 Pseudoprime numbers
- HDU 1905 Pseudoprime numbers
- HDU 1905(Pseudoprime numbers)
- HDOJ 1058:Humble Numbers 寻找丑数问题 解题报告
- POJ-1142 & HDOJ-1333 Smith Numbers 解题报告
- 【杭电1905】Pseudoprime numbers
- Pseudoprime numbers
- Pseudoprime numbers
- Pseudoprime numbers
- Pseudoprime numbers
- Pseudoprime numbers
- 微信的传播特性及传播模式
- 黑马程序员_集合实现控制台登录注册案例
- Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable con
- 在Delphi中使用事务
- Android WebRTC 音视频开发总结(三)
- HDOJ-1905-Pseudoprime numbers 解题报告
- OpenFire源码学习之三十二:使用Tsung测试openfire(下)
- matlab 命令集结(2)
- 解决hibernate对Sql Server分页慢的问题
- 获得屏幕宽/高,屏幕截图
- mysql存储过程实例
- 在 linux x86-32 模式下分析内存映射流程
- JMX 入门
- 炼数成金-Hadoop数据分析平台-第1周-作业