欧拉函数 FZOJ 1759 Super A^B mod C
来源:互联网 发布:c语言基础课程视频 编辑:程序博客网 时间:2024/05/17 22:30
Problem 1759 Super A^B mod C
Accept: 560 Submit: 1877
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 42 10 1000
Sample Output
124
Source
FZU 2009 Summer Training IV--Number Theory题意:就是求A^B%C
思路:由于B可能有100W位,所以直接快速幂肯定是超时的。所以需要降幂,有降幂公式:(a^(b%phi(c)+phi(c))%c=a^b%c
代码:
#include <vector>#include <list>#include <map>#include <set>#include <queue>#include <string.h>#include <string>#include <deque>#include <stack>#include <bitset>#include <algorithm>#include <functional>#include <numeric>#include <utility>#include <sstream>#include <iostream>#include <iomanip>#include <cstdio>#include <cmath>#include <cstdlib>#include <ctime>using namespace std;#define mp make_pair#define rep(i,n) for(int i=0;i<n;++i)#define clr(a,x) memset(a,x,sizeof(a))#define LL long longLL phi(LL n){ LL ans=n; for(LL i=2;i*i<=n;++i) { if(n%i==0) { ans=ans/i*(i-1); while(n%i==0) n/=i; } } if(n>1) ans=ans/n*(n-1); return ans;}char B[1000000+5];LL qpow(LL base,LL p,LL mod){ LL ret=1; while(p>0) { if(p&1) ret=(ret*base)%mod; base=(base*base)%mod; p>>=1; } return ret;}int main(){ LL A,C; while(scanf("%I64d",&A)==1) { scanf("%s",B); scanf("%I64d",&C); LL y=phi(C); LL c=0; int len=strlen(B); for(int i=0;i<len;++i) { c=c*10+B[i]-'0'; c%=y; } printf("%I64d\n",qpow(A,c,C)); }}
0 0
- 欧拉函数 FZOJ 1759 Super A^B mod C
- FZU 1759-Super A^B mod C(快速幂+大整数取模+欧拉函数)
- fzu Problem 1759 Super A^B mod C(快速幂取模+欧拉函数)
- FZU 1759 Super A^B mod C(数论+快速幂+欧拉函数)
- FZU 1759 Super A^B mod C (欧拉函数,快速幂,降幂公式)
- FZU oj 1759 Super A^B mod C (快速幂+指数循环节+欧拉函数)
- FZU 1759-Super A^B mod C (欧拉函数+降幂公式)
- FZU 1759-Super A^B mod C (快速幂+欧拉降幂+欧拉函数)
- FZU 1759 Super A^B mod C (欧拉函数,降幂公式)
- FZU1759 Super A^B mod C 欧拉函数+快速幂+公式
- Super A^B mod C 快速幂+欧拉函数降幂
- fzu1759 Super A^B mod C 【欧拉函数应用+快速幂】
- Super A^B mod C(指数循环节+欧拉函数)
- FZOJ 1752 A^B mod C
- FOJ 1759 Super A^B mod C
- FZU 1759 Super A^B mod C
- FZU 1759Super A^B mod C
- FZU-1759 Super A^B mod C
- C#:关于System.Collections空间
- GNUMakefiles之Makefiles的条件语句
- android UI设计 要素
- 二分法解决高精度
- easyui所有图标集
- 欧拉函数 FZOJ 1759 Super A^B mod C
- mysql语句:SET NAMES UTF8
- 指针和数组(上)
- 数组指针和指针数组的区别
- 博弈---尼姆博奕(Nimm Game)(重点)
- 项目中代办事宜的功能实现!
- 【暮色天】鸽派耶伦现"鹰"语 黄金空头展雄风(7.16)
- 百度地图SDK for Android【Demo兴趣点搜索】
- 数据结构笔记(3)栈与队列