代码:
#include
#define MAX 1000
using namespace std;
int Addition(char num1[],char num2[],int sum[])
{
int i,j,len;
int n2[MAX]={0};
int len1=strlen(num1);
int len2=strlen(num2);
len=max(len1,len2);
for(i=len1-1,j=0;i>=0;i--,j++)
sum[j]=num1[i]-'0';
for(i=len2-1,j=0;i>=0;i--,j++)
n2[j]=num2[i]-'0';
for(i=0;i9)
{
sum[i]-=10;
sum[i+1]++;
}
}
int l=len+2;
while(sum[l]==0) l--;
return l;
}
int main()
{
int i,len,sum[MAX];
char num1[MAX],num2[MAX];
while(~scanf("%s %s",num1,num2))
{
memset(sum,0,sizeof(sum));
len=Addition(num1,num2,sum);
if(len<0)
printf("0\n");
else
{
for(i=len;i>=0;i--)
{
printf("%d",sum[i]);
}
printf("\n");
}
}
return 0;
}
代码:
#include
#define MAX 105
using namespace std;
int Substraction(char s1[], char s2[], int re[])
{
int i,j,len,n[MAX]={0},flag=0;
int len1=strlen(s1);
int len2=strlen(s2);
if(len1s2[i])
break;
else if(s1[i]=0;i--,j++)
re[j]=s1[i]-'0';
for(i=len2-1,j=0;i>=0;i--,j++)
n[j]=s2[i]-'0';
for(i=0;i<=len;i++)
{
re[i]=re[i]-n[i];
if(re[i]<0)
{
re[i]+=10;
re[i+1]--;
}
}
len+=2;
while(re[len]==0) len--;
if(flag==1)
re[len]*=-1;
return len;
}
int main()
{
char s1[MAX],s2[MAX];
int i,re[MAX],len;
while(~scanf("%s %s",s1,s2))
{
memset(re,0,sizeof(re));
len=Substraction(s1,s2,re);
if(len<0)
printf("0\n");
else
{
for(i=len;i>=0;i--)
printf("%d",re[i]);
printf("\n");
}
}
return 0;
}
代码:
#include
#define MAX 10005
using namespace std;
int Multiplication(char num1[],char num2[], int sum[])
{
int i,j,len,len1,len2;
int a[MAX+10]={0};
int b[MAX+10]={0};
int c[MAX*2+10]={0};
len1=strlen(num1);
for(j=0,i=len1-1;i>=0;i--)
a[j++]=num1[i]-'0';
len2=strlen(num2);
for(j=0,i=len2-1;i>=0;i--)
b[j++]=num2[i]-'0';
for(i=0;i=10)
{
c[i+1]+=c[i]/10;
c[i]%=10;
}
}
for(i=MAX*2;c[i]==0&&i>=0;i--);
len=i+1;
for(;i>=0;i--)
sum[i]=c[i];
return len;
}
int main()
{
int i, len;
int sum[MAX*2+10];
char s1[MAX],s2[MAX];
while(~scanf("%s %s",s1,s2))
{
memset(sum,0,sizeof(sum));
len=Multiplication(s1,s2,sum);
if(len<=0)
printf("0\n");
else
{
for(i=len-1;i>=0;i--)
printf("%d",sum[i]);
printf("\n");
}
}
return 0;
}