大数运算(8)——大数幂运算

原创 2016年09月03日 21:31:39

大数幂运算的实现有了前面的大数乘法算法做铺垫,就是调用乘法函数,来循环去自乘,幂指数相应减1,直到幂指数变为0时结束。

下面是C语言代码实现:

#include<stdio.h>
#include<string.h>
#define MAX 100
char str[MAX];
int pro[MAX*MAX];//位数分别为a,b的两个数相乘,其最大位数为a*b 
int num[MAX];
void mul(int num[],int pro[],int len)//乘法函数 
{
	int s[MAX*MAX]={0};//每次是s[MAX*MAX]里面的个元素为0 
	int i,j;
	for(i=0;i<len;i++)//将因数各个位上的数字与另一个各个位上的数字相乘 
	{
		for(j=0;j<MAX*MAX;j++)
			s[i+j]=s[i+j]+num[i]*pro[j];//先乘起来,后面统一进行进位			 
	}
	for(i=0;i<MAX*MAX;i++)//进行进位 
	{
		if(s[i]>=10)  //若>=10 
			s[i+1]=s[i+1]+s[i]/10;  //将十位上数字进位 
		pro[i]=s[i]%10;  //将个位上的数字留下
	}		
}
int main()
{
	int n;
	while(~scanf("%s %d",str,&n))
	{
		int i,j,k;
		int len=strlen(str);
		for(j=0,k=0,i=len-1;i>=0;i--)
		{
			num[j++]=str[i]-'0';
			pro[k++]=str[i]-'0';
		}			
		n--;//第一次是两个num[]相乘 
		while(n)//求幂运算 
		{
			mul(num,pro,len);
			n--;
		}
		for(i=MAX*MAX-1;i>0;i--)  //删除0的前缀 
		    if(pro[i])
			    break;
		for(;i>=0;i--)  //倒序输出 
			printf("%d",pro[i]);
		printf("\n");
	}
	return 0;
}




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

大数幂运算

还是纯模拟,只可意会,不可言传,回到4年级,然后自己体会 #include #include using namespace std; #define MAX 40001 int s[MAX];...

大数a^b%c(快速幂运算)模板

其主要利用的原理就是 a^4 % c=(a^2)^2 % c; 那么这样去快速地算明显是指数级别的计算速度#include using namespace std; int main() { ...

大数阶乘和一个数的n次幂(c语言)

对于一个数的阶乘,一般情况下(不是竞赛),用

高精度幂运算(java大数)

链接: 求高精度幂 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于...

高精度幂的计算

/*对一个实数R( 0.0  *高精度幂的计算   */  #include #include #include /*malloc automatic distribute */  #defi...

大数运算小结

到大数运算(六)为止,总结的大数运算基本已经算告一段落了,这些代码大多都是曾经做的一些OJ上的题,稍加总结以后便放上来了。其中有大数的加,乘,阶乘,除,求余,以及幂,除最后一个幂是高精度的外,其他基本...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

大数幂运算

大数幂运算 源于POJ1001题目:http://acm.pku.edu.cn/JudgeOnline/problem?id=1001这个题目可以从简单问题一步一步入手。1. 先仿效上一篇计算大整数加...
  • midgard
  • midgard
  • 2009年10月24日 21:49
  • 3692

NOIP 2003 麦森数 COGS 41 高精快速幂+神奇的位数计算公式

TAT,一开始读错题了,以为输出的位数是超过500就默认输出500的。还奇怪为什么评论区里大家都在说什么位数计算公式,对数计算的换底公式啥的。 原来输出的是原数的位数!对于一个数k,它的位数是lg(...

大数运算的算法

在数学运算的过程中 ,经常碰到这样的问题:参与运算的 数字很大或者对运算结果的精度要求很高。无论何种计算机 语言 ,在描述数据类型时都有一定的精度和位数要求 ,比如说 16 位整型数 (int) 所能...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:大数运算(8)——大数幂运算
举报原因:
原因补充:

(最多只允许输入30个字)