nyoj 次方求模 102 (快速幂)
来源:互联网 发布:paxos算法和zookeeper 编辑:程序博客网 时间:2024/05/17 23:49
次方求模
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
求a的b次方对c取余的值
- 输入
- 第一行输入一个整数n表示测试数据的组数(n<100)
每组测试只有一行,其中有三个正整数a,b,c(1=<a,b,c<=1000000000) - 输出
- 输出a的b次方对c取余之后的结果
- 样例输入
32 3 53 100 1011 12345 12345
- 样例输出
3110481
//必须用long long 形式(在这块WA了3次),但int型是可以存储到1000000000.
//快速幂的具体思想就是,将x的y次方,变为(x*x)的(y/2)次方,然后依次类推。
#include<stdio.h>#include<string.h>#include<math.h>long long int a,b,c;long long ks(long long int x,long long int y,long long int c){long long int val=1;while(y){x%=c;if(y&1)val*=x;val%=c;y>>=1;x*=x;x%=c;}return val;}int main(){int t;int sum;scanf("%d",&t);while(t--){scanf("%lld%lld%lld",&a,&b,&c);printf("%lld\n",ks(a,b,c));}return 0;}
//改进后的快速幂,更直观。#include<stdio.h>#include<string.h>#include<math.h>long long int a,b,c;long long ks(long long int x,long long int y,long long int c){long long int val=1;while(y){if(y&1)//判断y是否为奇数,若是先乘上一个 x,将其变为偶数再取余。 val=(val*x)%c;y>>=1;//这块是关键::y 的值除以2,代表个数缩小一半。 x=(x*x)%c;//x变为两个x的乘积再取余。(缩短时间的关键) }return val;}int main(){int t;scanf("%d",&t);while(t--){scanf("%lld%lld%lld",&a,&b,&c);printf("%lld\n",ks(a,b,c));}return 0;}
0 0
- 次方求模(nyoj 102)(快速幂)
- NYOJ 102次方求模(快速幂)
- nyoj 次方求模 102 (快速幂)
- nyoj--102--次方求模(快速幂)
- nyoj 102 次方求模 快速求幂
- NYOJ 102 次方求模(快速求幂)
- nyoj 102 次方求摸 快速幂
- 次方求模(快速幂算法) nyoj 102
- NYOJ 题目102 次方求模(快速幂取余)
- NYOJ-102:次方求模
- nyoj-102-次方求模
- NYOJ-102-次方求模
- NYOJ 102 次方求模
- NYOJ 102 次方求模
- nyoj 102 次方求模
- Nyoj 102 次方求模
- NYOJ 102 次方求模
- NYOJ 102 次方求模
- hdu1171big events in hdu【多重背包模板】【01背包】
- 堆排序
- printf函数的另一用法
- poj Ikki's Story IV - Panda's Trick (2-sat)
- 好用易上手的免費插件 Fungus
- nyoj 次方求模 102 (快速幂)
- Centos系统mysql 忘记root用户的密码
- 近日CSDN异常登录,被别人在其他地方登录了,今天发现一部分博客都被删掉了,然后联系网站客服,给我恢复了。
- 计算机网络随记
- 图像二维离散小波变换
- 柱条分段展示(阶梯电价)
- 全国信息学分区联赛模拟试题(三)
- C语言的运算符的优先级与结合性+ASCII表
- 版本控制-SVN&GIT