当年做的第一道题(严格来说1000算第一道),当时还是个小屁孩,连C应该加什么头文件也记不清。这道题整整做了一个下午才A了
来说算法方面,对于这种高精度题,JAVA有绝对优势,毕竟有BigInteger类,对于C来说,我们只能模拟手算,写一个高精度乘法,用数组代替每一位,从后向前延伸。
下面是当年写的代码,现在看看实在是太丑了,简直无法直视,变量命名一塌糊涂,也算是一个学习的过程吧。
#include<iostream>
using namespace std;
int yici(int store[],int lenth,int n)
{
int i=0,j=0,jieguo=0,jinwei1=0,jinwei2=0,zanshizong=lenth,k=0,zanshi=lenth;
int b[1000]={0},c[9]={0};
for(i=0;i<9;i++)
{
c[i]=store[999-i];
}
for(k=1;k<n;k++)
{
for(i=0;i<5;i++)
{
for(j=0;j<zanshi;j++)
{
jieguo=store[999-j]*c[i]+jinwei2;
jinwei2=jieguo/10;
jieguo=jieguo%10;
b[999-i-j]+=jieguo+jinwei1;
if(b[999-i-j]>=10)
{
jinwei1=b[999-i-j]/10;
b[999-i-j]=b[999-i-j]%10;
}
else
{
jinwei1=0;
}
}
if(i+j>zanshizong)
{
zanshizong=i+j;
}
if(jinwei1||jinwei2)
{