标签:str mes pac mod style ret col ase lld
基本思路
于是代码出来了;
#include <cstdio> using namespace std; int poww(int a,int b){ int ans=1,base=a; while(b != 0){ if(b&1 != 0) ans*=base; base*=base; b>>=1; } return ans; } int main(){ int a,b,c; scanf("%d %d %d",&a,&b,&c); int ans=poww(a,b)%c; printf("%d^%d mod %d=%d\n",a,b,c,ans); return 0; }
结果硬生生给窝WA了五个点!
仔细观看题目后...
!数据类型应开 long long !大意了!
!在快速幂过程中也需一直 mod !
于是...
#include <cstdio> using namespace std; long long poww(long long a,long long b,long long c){ long long ans=1,base=a; while(b != 0){ if(b&1 != 0)
// 取余 ans=ans*base%c; base=base*base%c; b>>=1; } return ans; } int main(){ long long a,b,c; // 类型应为 long long; scanf("%lld %lld %lld",&a,&b,&c); int ans=poww(a,b,c)%c; printf("%lld^%lld mod %lld=%lld\n",a,b,c,ans); return 0; }
一道模板题被AC了!
Luogu 题解 P1226 【[模板] 快速幂||取余运算】
标签:str mes pac mod style ret col ase lld
原文地址:https://www.cnblogs.com/Rnin-Benny/p/13138110.html