博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FZU Super A^B mod C(欧拉函数降幂)
阅读量:5038 次
发布时间:2019-06-12

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

Problem 1759 Super A^B mod C

Accept: 878    Submit: 2870
Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000000000,1<=B<=10^1000000).

 Input

There are multiply testcases. Each testcase, there is one line contains three integers A, B and C, separated by a single space.

 

 Output

For each testcase, output an integer, denotes the result of A^B mod C.

 

 Sample Input

3 2 4
2 10 1000

 Sample Output

1
24

 Source

FZU 2009 Summer Training IV--Number Theory

 

 

题目链接:

参考博客:,本来在搞蛇精病的十进制快速幂的时候做的这个,结果超时了,后来测试发现十进制快速幂还没二进制快……是我太天真了……于是膜一下正确解法,主要利用了这个欧拉定理的扩展公式,当然最重要的是求出一个数的欧拉函数值$phi(x)$,这个可以用埃式筛的思想求得。

代码:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define INF 0x3f3f3f3f#define LC(x) (x<<1)#define RC(x) ((x<<1)+1)#define MID(x,y) ((x+y)>>1)#define CLR(arr,val) memset(arr,val,sizeof(arr))#define FAST_IO ios::sync_with_stdio(false);cin.tie(0);typedef pair
pii;typedef long long LL;const double PI = acos(-1.0);const int N = 1000010;LL bpow(LL a, LL b, LL mod){ LL r = 1LL; while (b) { if (b & 1) r = ((r % mod) * (a % mod)) % mod; a = ((a % mod) * (a % mod)) % mod; b >>= 1; } return r;}LL phi(LL n){ LL r = n, sz = sqrt(n); for (LL i = 2; i <= sz; ++i) { if (n % i == 0) { r = r * (i - 1) / i; while (n % i == 0) n /= i; } } if (n > 1) r = r * (n - 1) / n; return r;}int main(void){ LL a, c; char B[N]; while (~scanf("%I64d%s%I64d", &a, B, &c)) { LL phi_c = phi(c); int len = strlen(B); LL b; if (len <= 20) { sscanf(B, "%I64d", &b); if (b >= phi_c) b = b % phi_c + phi_c; } else { b = 0LL; for (int i = 0; i < len; ++i) { b = b * 10LL + B[i] - '0'; if (b > phi_c) b %= phi_c; } b += phi_c; } printf("%I64d\n", bpow(a, b, c)); } return 0;}

转载于:https://www.cnblogs.com/Blackops/p/6414134.html

你可能感兴趣的文章
CSS兼容性常见问题总结
查看>>
HDU 1548 A strange lift (Dijkstra)
查看>>
每天一个小程序—0005题(批量处理图片大小)
查看>>
C# 启动进程和杀死进程
查看>>
tcp实现交互
查看>>
IIS的各种身份验证详细测试
查看>>
JavaScript特效源码(3、菜单特效)
查看>>
聊聊、Zookeeper Linux 单服务
查看>>
Linux常用命令总结
查看>>
KRPano动态热点专用素材图50多个,加动态热点使用方法
查看>>
yii模型ar中备忘
查看>>
C#线程入门
查看>>
CSS清除浮动方法
查看>>
JVM内存回收机制简述
查看>>
洛咕 P2480 [SDOI2010]古代猪文
查看>>
js-创建对象的几种方式
查看>>
JDK JRE Java虚拟机的关系
查看>>
2018.11.20
查看>>
word20161215
查看>>
12th week blog
查看>>