问题:计算100!
很显然,用普通方法是无法保存其结果的。
问题分析:
利用整形数组或者字符数组进行拆分保存;
然后建立相应的运算规则,就可以得到运算结果。
举例:
1234567|1234567|1234567|1234567
* 1234567
第一个数为1234567123456712345671234567,第二个数为1234567;
对第一个数建立一个数组num[4],将第二个数记为a;
计算规则:
for i=0 to i=3 {
temp=num[i]*a+temp2;
temp1=temp%(10^8); //8代表数组每一个的位数+1
temp2=temp/(10^8);
将temp1保存到结果数组的i位中;
temp2作为进数留给下一个元素;
} 最后还要处理i=4(要考虑比原来的更长)等情况
问题1:
如果数组的一个元素为0000000,那么最后将数融合后得到的结果就是0;
解决方案:
1.换成字符二维数组:在运算的时候,转换成为整形运算,或者直接建立字符运算规则;
2.补0:对每一个数与10的n次幂(根据数组每一个元素长度)进行比较,如果小于,那么补输出相应的0;