13的100次方的计算

Posted future_liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了13的100次方的计算相关的知识,希望对你有一定的参考价值。

今天看到了这个题,开始的时候不知道怎么,然后就查了各种资料,加之gdb的调试之后总算是有些成效了。现在把它记录下来,整理一下。

题目就是标题,用一个数组存储13的100次方的值,然后输出来。

代码如下:

说明一下:这个代码是我拷的网上的代码,这里只是把他解析一下而已;

 

1 #include<stdio.h>
2
3 int main()
4 {
5 int a[100]={1,0},b[100]={0};
>> 6 b[-1]=0;
7 int i,t,cut=1;
8 for(i=1;i<101;i++)
9 {
10 for(t=0;t<cut;t++)
11 {
12 b[t]=a[t]=a[t]*13;
13 a[t]=a[t]%1000+b[t-1]/1000;
14 if(b[cut-1]!=0)
15 cut++;
16 }
17 }
18 printf("13的100次方是:");
19 for(i=cut-1;i>=0;i--)
20 {
21 printf("%d",a[i]);
22 }
23 printf("\\n");
24 return 0;
25 }

如下是我进行gdb调试的结果。

 

 

 

 

 

 

 

 

 

从上面的过程可以看出来,a,b数组在不断的扩充;如下示出13的次方,可以进行对比。

13^1=13;

13^2=169;

13^3=2,197;

13^4=28,561;

13^5=371,293;

13^6=4,826,809 

 ......

可以看出来a数组中迭代的是13的次方的每隔3位数字,而且a[0]保存的是低三位,依次提高;b数组中存储的是每次a数组的对应位的前一个数和13的乘积,并且b[t-1]/1000中的数就是超出三位数的数,加到高位a[t]中,即:低三位向高位的进位,然后a的高位加上之后继续可以求出a的高位。简单的说就是,13的每次乘积每三位一分隔,然后迭代低三位*13%1000,就是下一个迭代的低三位,然后低位的进位与高位的乘积相加的结果*13,就是下一个迭代的高三位。依次循环继续执行。

 

以上是关于13的100次方的计算的主要内容,如果未能解决你的问题,请参考以下文章

c语言计算一个数q的1次方到n次方的和,而q和n的数量级都是10的9次方,结果取模,怎么减少时间呢

计算2的N次方

编程计算 S=1+2+4+8、、、、、、、、、 (100项) 用汇编或C语言 选啥数据类型呀?

二元一次方程组怎么解

AC日记——计算2的N次方 openjudge 1.6 12

2的n次方python代码