华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1205|回复: 2
打印 上一主题 下一主题

P1226 取余运算||快速幂

[复制链接]

738

主题

1485

帖子

5422

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5422
跳转到指定楼层
楼主
发表于 2018-6-29 17:27:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
https://www.luogu.org/problemnew/show/P1226

题目描述
输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数。

输入输出格式
输入格式:
三个整数b,p,k.

输出格式:
输出“b^p mod k=s”

s为运算结果

输入输出样例
输入样例#1:
2 10 9
输出样例#1:
2^10 mod 9=7
回复

使用道具 举报

50

主题

215

帖子

619

积分

高级会员

Rank: 4

积分
619
沙发
发表于 2018-7-2 20:57:18 | 只看该作者
  1. #include<iostream>
  2. using namespace std;
  3. long long int b,aa,p,k;
  4. int i,j;
  5. long long int ksm(long long int a,long long int c,long long int d)
  6. {
  7.     int t=1;aa=a;
  8.     while(c>0)
  9.     {
  10.         if(c%2!=0)t=t*aa%k;
  11.         aa=aa*aa%k;c=c/2;
  12.     }
  13.     return t%k;
  14. }
  15. int main()
  16. {
  17.     cin>>b>>p>>k;
  18.     cout<<b<<"^"<<p<<" mod "<<k<<"="<<ksm(b,p,k);
  19.     return 0;
  20. }
复制代码
回复 支持 反对

使用道具 举报

3

主题

50

帖子

365

积分

中级会员

Rank: 3Rank: 3

积分
365
板凳
发表于 2018-8-14 20:53:26 | 只看该作者
  1. #include<iostream>
  2. using namespace std;
  3. long long  b,p,k;
  4. long long aa,bb,cc;
  5. long long ans;
  6. int main()
  7. {
  8.     cin>>b>>p>>k;
  9.     aa=b;
  10.     bb=p;
  11.     long long ans=1;
  12. while(bb>0)
  13. {
  14.     if(bb%2==1)
  15.         ans=ans%k*aa%k;
  16.     aa=aa%k*aa%k;
  17.     bb/=2;
  18. }
  19. ans=ans%k;
  20. cout<<b<<"^"<<p<<" mod "<<k<<"="<<ans;
  21.    return 0;
  22. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-12-26 12:58 , Processed in 0.107261 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表