许多著名的加密运算需要模指数运算。即,给定整数 x、y 和 m,计算 x ^y mod m 。本问题中,你
的任务是给出一个有效的程序执行这种计算。
许多著名的加密运算需要模指数运算。即,给定整数 x、y 和 m,计算 x ^y mod m 。本问题中,你
的任务是给出一个有效的程序执行这种计算。
输入的第一行是一个测试数据的个数 n,接着是 n 组测试数据。每组测试数据由一行上的三个正整数 x、
y 和 m 构成,之间用空格隔开。你可以假定:1<x,m< =32768 1<y<109。
对每组测试数据输出一行。第 i 行的输出是对于第 i 组测试数据 x、y 和 m,满足 z= x y mod m 的非 负整数 z。
本来懒得想那么多,直接就是a^m*b^m再^m算了,一个一个来,不要逼我
然后可想而知,超时了
上网查了一下,这题是有原型的,A^BmodC,大家可以查一下
嗯.....思路如下,二分法,永远比一个一个来要简单方便得多
#include "stdio.h" int power(int a,int b,int c) { int tmp; if (b==0) { return 1; } tmp=power((a*a)%c,b/2,c); if (b%2!=0) { tmp=(tmp*a)%c; } return tmp; } int main() { int a,b,c; int number; scanf("%d",&number); while(number--) { scanf("%d %d %d",&a,&b,&c); printf("%d\n",power(a,b,c)); } return 0; }
原文:http://www.cnblogs.com/zhko11993/p/3809027.html