首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

幂取模求如何错了。

2012-04-10 
幂取模求怎么错了。。#includeiostream//幂取模a^n mod m#includeconio.h/*a,n,m 大的情况*/using names

幂取模求怎么错了。。
#include<iostream> //幂取模 a^n mod m 
#include<conio.h>
/* a,n,m 大的情况 */ 
using namespace std;
int getmod( int a,int n,int m ) //分治算法 
{
  int x=getmod(a,n/2,m);
  long long ans=((long long )x*x)%m;
  if(n%2==1) ans=ans*a%m;
  return (int )ans;

   
int main()
{
  int a,n,m;
  scanf("%d%d%d",&a,&n,&m);
  int x=getmod( a, n, m );
  printf("%d\n",x);
  system("pause");return 0;
}
 

[解决办法]
递归算法必须要设置好递归出口。你的代码里没有出口,会导致无限递归。

C/C++ code
int getmod( int a,int n,int m ) //分治算法  {    if (n==0)       /* 递归出口条件 */        return 1;    int x=getmod(a,n/2,m);    long long ans=((long long )x*x)%m;    if(n%2==1) ans=ans*a%m;    return (int )ans;} 

热点排行