欧拉函数&&快速乘方

 1 //phi(a)=a*(a1-1)*(a2-1)*(a3-1)*...*(an-1)/(a1*a2*a3*...*an);
 2 #include<iostream>
 3 #include<cstdlib>
 4 #include<cstring>
 5 #include<cmath>
 6 using namespace std;
 7 typedef __int64 LL;
 8 LL phi(LL a){//phi
 9     LL temp=a;
10     for(LL i=2;i*i<=a;i++)
11         if(a%i==0){
12             while(a%i==0)  a/=i;
13             temp=temp/i*(i-1);
14         //    cout<<"a="<<a<<" i="<<i<<endl;
15         }
16         //cout<<"a="<<a<<endl;
17         if(a!=1)  temp=temp/a*(a-1);
18     return temp;
19 }
20 int main(){
21     LL a;
22     while(cin>>a)
23     cout<<"phi(a)="<<phi(a)<<endl;
24     return 0;
25 }快速乘方 求a的k次方mod b
 1 #include<iostream>
 2 #include<cstdlib>
 3 #include<cstring>
 4 using namespace std;
 5 typedef __int64 LL;
 6 LL modd(LL a,LL k,LL b){
 7     int temp,ans;
 8     ans=1;
 9     temp=a;
10     while(k!=0){
11         if(k%2)   ans=ans*temp%b;
12         temp=temp*temp%b;
13         k/=2;
14     }
15     return ans;
16 }
17 int main(){
18     LL a,b,k;
19     while(cin>>a>>b>>k)
20       cout<<modd(a,k,b)<<endl;
21     return 0;
22 }

欧拉函数&&快速乘方,布布扣,bubuko.com

时间: 2024-10-11 21:55:31

欧拉函数&&快速乘方的相关文章

XMU 1615 刘备闯三国之三顾茅庐(三) 【欧拉函数+快速幂+欧拉定理】

1615: 刘备闯三国之三顾茅庐(三) Time Limit: 1000 MS  Memory Limit: 128 MBSubmit: 45  Solved: 8[Submit][Status][Web Board] Description 刘备(161年-223年6月10日),字玄德,东汉末年幽州涿郡涿县,西汉中山靖王刘胜的后代.刘备一生极具传奇色彩,早年颠沛流离.备尝艰辛最终却凭借自己的谋略终成一方霸主.那么在那个风云激荡的年代,刘备又是如何从一个卖草鞋的小人物一步一步成为蜀汉的开国皇帝呢

hdu 3307 Description has only two Sentences (欧拉函数+快速幂)

Description has only two SentencesTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 852 Accepted Submission(s): 259 Problem Descriptionan = X*an-1 + Y and Y mod (X-1) = 0.Your task is to calculate th

Exponial (欧拉定理+指数循环定理+欧拉函数+快速幂)

题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=2021 Description Everybody loves big numbers (if you do not, you might want to stop reading at this point). There are many ways of constructing really big numbers known to humankind, for instanc

hdu 2837 Calculation【欧拉函数,快速幂求指数循环节】

欢迎关注__Xiong的博客: http://blog.csdn.net/acmore_xiong?viewmode=list Calculation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1912    Accepted Submission(s): 413 链接:click me Problem Description A

poj 2773 利用欧拉函数求互质数

题意:找到与n互质的第 k个数 开始一看n是1e6 敲了个暴力结果tle了,后来发现k达到了 1e8 所以需要用到欧拉函数. 我们设小于n的 ,与n互质的数为  (a1,a2,a3.......a(phi(n))) 那么显然,在区间  [ k*n , (k+1)*n ]内的互质数即为 k*n+(a1,a2,a3.......a(phi(n))) 所以只需要求出 (a1,a2,a3.......a(phi(n))) 就可以利用欧拉函数快速找到后面的数 代码如下: #include <iostrea

HDU 3221 矩阵快速幂+欧拉函数+降幂公式降幂

装载自:http://www.cnblogs.com/183zyz/archive/2012/05/11/2495401.html 题目让求一个函数调用了多少次.公式比较好推.f[n] = f[n-1]*f[n-2].然后a和b系数都是呈斐波那契规律增长的.需要先保存下来指数.但是太大了.在这里不能用小费马定理.要用降幂公式取模.(A^x)%C=A^(x%phi(C)+phi(C))%C(x>=phi(C)) Phi[C]表示不大于C的数中与C互质的数的个数,可以用欧拉函数来求. 矩阵快速幂也不

POJ2478_Farey Sequence【快速求欧拉函数】

Farey Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12377 Accepted: 4808 Description The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/b with 0 < a < b <= n and gcd(a,b) = 1

poj3696 快速幂的优化+欧拉函数+gcd的优化+互质

这题满满的黑科技orz 题意:给出L,要求求出最小的全部由8组成的数(eg: 8,88,888,8888,88888,.......),且这个数是L的倍数 sol:全部由8组成的数可以这样表示:((10^x)-1)*(8/9) 那么有m=((10^x)-1)*(8/9)=k*L,answer即满足条件的最小的x 性质1:若ax=by且a和b互质,那么说明a中没有任何b的质因子,b的质因子一定都在x里.所以x是b的倍数. 所以先想方设法在等式中构造两个互质的数以便化简.我们取p=8/gcd(8,L

快速幂 生成素数表 生成Euler欧拉函数值表

快速幂: int pow_mod(LL a,LL b) { int num=1; while(b) { if(b&1) num=(num*a)%MOD; a=(a*a)%MOD; b>>=1; } return num; } 生成素数表: bool flag[maxn]={0}; void Prime(int x) { for(int i=2;i<=x;i++) { if(flag[i]) continue; prime[cnt++]=i; for(int j=2;i*j<