求一个小于10的正整数的n次方,n很大

来源:互联网 发布:淘宝男装运动名字大全 编辑:程序博客网 时间:2024/04/30 07:58

经常碰到一个小数的n次方的问题,结果数量级很大,超过double的范围,但是这种问题可以转为求一个小于10的正整数的n次方,然后在进行处理。

void power(int *a,int base,int n)  {      int j,k,i,set=0;      for (k=base,i=0;i<MAX;i++,k/=10)          a[i]=k%10;      for (i=0;i<n-1;i++)      {          for (j=0;j<MAX;j++)          {              a[j]=a[j]*base+set;              set=a[j]/10;              a[j]=a[j]%10;          }      }  } 

将结果放在数组a中,且最高位在最后面,最高位后面全部是0,用法如下:

#include <iostream>  using namespace std;  #define MAX 200  void power(int *a,int base,int n);  //求base的n次方 结果存放在数组a中  int main()  {  int a,b;cin>>a>>b;int c[MAX];power(c,a,b);int index=MAX-1;while(c[index]==0)index--;for(int i=index;i>=0;i--)cout<<c[i];    return 0;  }  void power(int *a,int base,int n)  {      int j,k,i,set=0;      for (k=base,i=0;i<MAX;i++,k/=10)          a[i]=k%10;      for (i=0;i<n-1;i++)      {          for (j=0;j<MAX;j++)          {              a[j]=a[j]*base+set;              set=a[j]/10;              a[j]=a[j]%10;          }      }  }


0 0
原创粉丝点击