1
0
1
0
0
0
0
0
包思远
新手启示者
新手启示者
Mul()函数:
无返回值型 Mul(){//乘法 (无返回值型:void)
c数组清0; // ( memset(c,0,sizeof(c)) )
c[0]赋值为 a[0]加b[0];//积的位数 (c[0]=a[0]+b[0])
for(整形 i=1;i<=a[0];i++){
for(int j=1;j<=b[0];j++){
c[i+j-1]+=a[i]*b[j];//这里一定要+=
}
}
定义 整形 jw赋初值为0;//jw初值0
for(整形 i=1;i<=c[0];i++){
c[i]=c[i]+jw;
jw=c[i]/10;
c[i]%=10;
}
while(c[c[0]]等于0)c[0]自减;//高位连续0的情况 (while(c[c[0]==0)c[0]--;
}
swap()函数:
无返回值型 swap(){ // (无返回值型:void)
a[0]赋值为c[0];
for(整形 i=1;i<=c[0];i++){
a[i]赋值为c[i];
}
}
主函数:
定义 字符串型 s;
输入s;
if(((整形)s[s.size()-1]-48)%2==0){
定义 超长整形 sum=0; // (超长整形:long long)
for(整形 i=0;i<s.size();i++){
sum=sum+s[i]-48;
}
输出<<"H="<<sum;
}
else{
c[0]赋值为1,c[1]赋值为1;
for(整形 i=0;i<s.size();i++){
swap();
b[0]赋值为1;
b[1]赋值为 (整形)s[i]-48; // (b[1]=(int)s[i]-48)
Mul();
}
输出<<"J=";
for(整形 i=c[0];i>=1;i--){
输出<<c[i];
}
}