[C] 纯文本查看 复制代码 #include <bits/stdc++.h>
using namespace std;
#include<bits/stdc++.h>
using namespace std;
int gjdjf(char a,char b)
{
//char a[100],b[100];
int a1[100],b1[100],c[100];
cin>>a>>b;
int jw=0;
int al=strlen(a),bl=strlen(b);
int len=max(strlen(a),strlen(b))
for(int i=al-1;i>=0;i++)
{
a1[i]=a[al-i-1]-'0';
}
for(int i=bl-1;i>=0;i++)
{
b1[i]=b[bl-i-1]-'0';
}
for(int i=0;i<len;i++)
{
c[i]=(a1[i]+b1[i]+jw)%10;
jw=(a1[i]+b1[i]+jw)/10;
}
return c;
}
void fbn()
{
int s;
cin>>s;
char a[100];
a[0]='1';
a[1]='1';
for(int i=2;i<s;i++)
{
a[i]=gjdjf(a[i-1],a[i-2])+'0';
}
printf("%d",a[n-1]);
return 0;
}/*int a[5]
cin.get(a,5)*/
[C] 纯文本查看 复制代码 #include <bits/stdc++.h>
using namespace std;
void g_chen()//10进制高精度乘法
{
char a[1000],b[1000];
int a1[1000]={0},b1[1000]={0},c1[2001]={0};
cin>>a>>b; //输入
int len_a=strlen(a);//截取长度
int len_b=strlen(b);
int jw=0;//进位
for(int i=len_a-1;i>=0;i--)//反向+转换int
{
a1[len_a-1-i]=a[i]-'0';
}
for(int i=len_b-1;i>=0;i--)
{
b1[len_b-1-i]=b[i]-'0';
}
for(int i=0;i<len_a;i++)//乘法
for(int j=0;j<len_b;j++)
{
c1[i+j]+=a1[i]*b1[j];
c1[i+j+1]+=(c1[i+j]/10);
c1[i+j]=c1[i+j]%10;
}
int flag=1;
for(int i=len_a+len_b;i>=0;i--)//反向输出
{
if((flag==1)&&c1[i]==0){}//如果c第1个位0,跳过
else
{cout<<c1[i];
flag=0;
}
}
if(flag==1) cout<<0;//如果没输出任何数,输出0
}
void g_chufa()//10进制高精除法 高精/低精
{
char a[2000];
int a1[2000],c[2000]={0},flag=0;
int b,x=0;
cin>>a>>b;//输入
for(int i=0;i<strlen(a);i++)//转换int
{
a1[i]=a[i]-'0';
}
for(int i=0;i<strlen(a);i++)//x余数
{
c[i]=(a1[i]+10*x)/b;//相除
x=a1[i]%b;//取余数
}
for(int i=0;i<strlen(a);i++)
{
if((flag==0)&&c[i]==0){}//如果第一个数为0,跳过
else
{
cout<<c[i];//输出
flag=1;//标志位设为1
}
}
if(flag==0) cout<<0;//如果啥也没输出,输出0
}
int main()
{
g_chen();
return 0;
} |