北大ACM3641——Pseudoprime numbers~~快速求幂法
来源:互联网 发布:mac系统怎么卸载flash 编辑:程序博客网 时间:2024/06/05 10:25
这一题,主要是快速求幂的方法的应用。
可以看看快速求幂方法的原理:http://blog.csdn.net/qq_25425023/article/details/44316463
题目的大概意思是:
输入两个数p,a,p为素数,则直接输出no,否则判断a^p % p == a?等于就yes,不等于就no。
理解了题目的意思,就很容易了。
下面的是AC代码:
#include <iostream>#include <cstdio>using namespace std;int is_prime(__int64 x) //判断是否为素数{int flag = 0;for(int i = 2; i * i <= x; i++){if(x % i == 0){flag = 1;break;}}if(flag)return 0;elsereturn 1;}int main(){__int64 p, a;while(scanf("%I64d%I64d", &p, &a) != EOF){if(p == 0 && a == 0)break;if(is_prime(p)) //判p是否为素数{cout << "no" << endl;continue;}__int64 sum = 1;int mod = p; //备份p,后面p的值会改变int ans = a; //备份a,后面a的值会改变while(p > 0){if(p & 1) //p的二进制数的最后一位为1sum = sum * a % mod; //sum 乘上a = a * a % mod; //不断乘以ap >>= 1; //p除以2;}if(sum == ans)cout << "yes" << endl;elsecout << "no" << endl;}return 0;}
1 0
- 北大ACM3641——Pseudoprime numbers~~快速求幂法
- POJ3641 Pseudoprime numbers 快速幂
- POJ3641 Pseudoprime numbers 【快速幂】
- Pseudoprime numbers(快速幂取模)
- Pseudoprime numbers(快速幂)
- Pseudoprime numbers(poj3641)快速幂
- UVa11287 - Pseudoprime Numbers(欧拉筛选法、快速求幂法)
- POJ3641 Pseudoprime numbers(快速幂取模)
- PKU 3641 Pseudoprime numbers 快速模取幂 素数
- POJ 3641 Pseudoprime numbers (快速幂取模)
- poj 3641 Pseudoprime numbers 【快速幂】
- hdu 1905 Pseudoprime numbers 快速幂取余
- poj.3641 Pseudoprime numbers【快速幂取模】 20141127
- POJ 3641 - Pseudoprime numbers(快速幂)
- Pseudoprime numbers(POJ-3641)(快速幂)
- POJ 3614 Pseudoprime numbers(快速幂)
- HDU 1905 Pseudoprime numbers (快速幂求余)
- POJ 3641 Pseudoprime numbers(快速幂+素数)
- 山东省第二届ACM大学生程序设计竞赛——Mathman Bank
- 利用nf_conntrack机制存储路由,省去每包路由查找
- ios地图定位学习
- java 第三天
- 文件操作
- 北大ACM3641——Pseudoprime numbers~~快速求幂法
- TestFlight——完美的iOS App测试方案
- 第38题
- MySQL数据库表无法插入中文字符
- Understanding Shared Memory and Semaphores
- 百度的
- 树状数组模板
- 商场超市类APP开发分析
- 欧几里德算法(求两个正整数的最大公约数)