28 条题解
-
-1
自认为代码很通俗
首先,直接算是肯定不行的,我们要一步一步来
相关知识请看 OI Wiki
#include<bits/stdc++.h> using namespace std; int main(){ long long b,p,k; cin >> b >> p >> k; long long ans = 1; while (p != 0){ if(p % 2 !=0)ans = ans * b % k; p /= 2; b = b * b % k; } cout << ans; }
-
-1
核心代码一行的快速幂:
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll a, b, p; ll power (ll a, ll b, ll p) { return b == 0? 1: (b & 1? a: 1) * power (a * a % p, b >> 1, p) % p; } int main () { scanf ("%lld%lld%lld", &a, &b, &p); printf ("%lld", power (a, b, p)); return 0; }
压行(164B)!
#import<iostream> typedef long long L;L a,b,p;L P(L a,L b,L p){return b?(b&1?a:1)*P(a*a%p,b/2,p)%p:1;}int main(){std::cin>>a>>b>>p;std::cout<<P(a,b,p);return 0;}
顺便找了一个不递归的压了压(182B):
#import<iostream> typedef long long L;L a,b,p;L P(L a,L b,L p){L S=1;while(b){if(b&1)S=S*a%p;a=a*a%p;b/=2;}return ans;}int main(){std::cin>>a>>b>>p;std::cout<<P(a,b,p);return 0;}
可以发现,前者代码短一点。
(喂喂我这个大码量人为什么要玩 Code Golf 啊
-
-1
Hydro H1032【模板】快速幂 & 洛谷 P1226 题解
#include<iostream> using namespace std; long long a,b,p,q,w; int loop(long long x,long long y) { if(y==0) { return 1; } long long res=1; while(y) { if(y&1) { res=res*x%p; /*需要%*/ } x=x*x%p; /*需要%*/ // cout<<x<<endl; y>>=1; } return res; } int main() { cin>>a>>b>>p; q=loop(a,b); w=q % p; cout<<w<<endl; }
信息
- ID
- 171
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 1264
- 已通过
- 398
- 上传者