首页 > 其他 > 详细

【正睿多校联盟Day4 T4 简单的数论题】

时间:2018-06-06 19:54:26      阅读:169      评论:0      收藏:0      [点我收藏+]

题目名有毒

技术分享图片

由于并没有系统地开始学习数论,所以数论题基本靠暴力。

然鹅本题的题解相当简单:

技术分享图片

emmm....我当你没说

一个简单易懂的方法是这样的:

1. 欧拉定理的推论

    若正整数a,n互质,则对于任意正整数b,有 a^b≡a^(b mod φ(n)) (mod n)


2.欧拉函数

我们用1~n中与n互质的数的个数称为n的欧拉函数。

欧拉函数我们用φ(n)表示。

特殊地,当n为质数时,φ(n)=n-1.

 

那么我们可以综合以上知识

先求出b^c mod (p-1) ,再用快速幂求出a^(b^c mod (p-1))%p.

 

code

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 ll a,b,c,p;
 5 ll ksm(ll x,ll y,ll moder)
 6 {
 7     ll ans=1;
 8     while(y)
 9     {
10         if(y&1) ans=ans*x%moder;
11         y>>=1;
12         x=x*x%moder;
13     }
14     return ans;
15 }
16 int main()
17 {
18     scanf("%lld%lld%lld%lld",&a,&b,&c,&p);
19     ll tmp=ksm(b,c,p-1);
20     printf("%lld",ksm(a,tmp,p));
21     return 0;
22 }

 

【正睿多校联盟Day4 T4 简单的数论题】

原文:https://www.cnblogs.com/nopartyfoucaodong/p/9146576.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!