#include<cstdio>
#include<cstring>
using namespace std;
const int N=2e3+10;
char s1[N],s2[N];
int p,a1[N],a2[N],a3[N],a4[N];
inline bool bi(int a[],int b[]){//高精度除法
if(a[0]<b[0]) return 0;
if(a[0]>b[0]) return 1;
for(int i=a[0];i;i--){
if(a[i]<b[i]) return 0;
if(a[i]>b[i]) return 1;
}
return 1;
}
inline void jian(int a[],int b[]){
for(int i=1;i<=a[0];i++){
if(a[i]<b[i]){
a[i]+=10;
a[i+1]--;
}
a[i]-=b[i];
}
for(;!a[a[0]]&&a[0]>1;a[0]--);
}
int main(){
scanf("%s%s",s1,s2);
int len1=strlen(s1);
int len2=strlen(s2);
for(int i=len1-1;i+1;i--) a1[++p]=s1[i]-'0';p=0;
for(int i=len2-1;i+1;i--) a2[++p]=s2[i]-'0';p=0;
a1[0]=len1;
a2[0]=len2;
a4[0]=len1-len2+1;
for(int i=a4[0];i;i--){
memset(a3,0,sizeof a3);
for(int j=1;j<=a2[0];j++) a3[j+i-1]=a2[j];
a3[0]=a2[0]+i-1;
while(bi(a1,a3)) a4[i]++,jian(a1,a3);
}
for(;!a4[a4[0]]&&a4[0]>1;a4[0]--);
for(int i=a4[0];i;i--) printf("%d",a4[i]);
return 0;
}
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
void Add(char s1[],char s2[])//大数加法
{
int num1[1005]={0},num2[1005]={0},sum[1008]={0};//三个数组注意要初始化为0
int i,j=0,k=0,len1,len2;
len1=strlen(s1);
len2=strlen(s2);
for(i=len1-1;i>=0;i--)
num1[j++]=s1[i]-'0';
for(i=len2-1;i>=0;i--)
num2[k++]=s2[i]-'0';
// cout<<1<<endl;
for(i=0;i<=1005;i++)
{
sum[i]=num1[i]+num2[i]+sum[i];
if(sum[i]>=10)
{
sum[i+1]++;
sum[i]=sum[i]%10;
}
// cout<<sum[i];
}
for(i=1004;;i--)
{
if(sum[i]!=0)
{
k=i;
break;
}
}
for(i=k;i>=0;i--)
cout<<sum[i];
cout<<endl;
}
int main()
{
char a[1005],b[1005];
scanf("%s %s",a,b);
if(a[0]=='0'&&b[0]=='0')//全为0
cout<<0<<endl;
else
Add(a,b);
return 0;
}
#include<stdio.h>
#include<string.h>
int c[5001]={0};
char a[5001],b[5001];
int k;
void f(char a[],char b[])//大数相减
{
int i,j;
for(i=strlen(a)-1,j=strlen(b)-1,k=0;j>=0;i--,j--,k++)
{
c[k]+=a[i]-'0'-(b[j]-'0');
if(c[k]<0)
{
c[k]+=10;
c[k+1]--;
}
}
for(j=i;j>=0;j--,k++)
{
c[k]+=a[j]-'0';
if(c[k]<0)
{
c[k]+=10;
c[k+1]--;
}
}
}
int main()
{
int i,j;
while(~scanf("%s - %s",a,b))
{
memset(c,0,sizeof(c));
if(strlen(a)>strlen(b))
f(a,b);
else if(strlen(b)>strlen(a))
{
printf("-");
f(b,a);
}
else
{
if(strcmp(a,b)==0)
printf("0\n");
else if(strcmp(a,b)>0)
f(a,b);
else
{
f(b,a);
printf("-");
}
}
for(i=5000;;i--)
{
if(c[i]!=0)
{
for(j=i;j>=0;j--)
printf("%d",c[j]);
break;
}
}
printf("\n");
}
}
#include<stdio.h>
#include<string.h>
int c[5001];
char a[5001],b[5001];//大数相乘
int d;
void f(char a[],char b[])
{
int k=0,i,j;
for(i=strlen(a)-1;i>=0;i--)
{
d=k;
for(j=strlen(b)-1;j>=0;j--)
{
c[d]+=(a[i]-'0')*(b[j]-'0');
d++;
}
k++;
}
}
int main()
{
int i,j;
while(~scanf("%s * %s",a,b))
{
if(a[0]=='0'||b[0]=='0')
printf("0\n");
else
{
memset(c,0,sizeof(c));
f(a,b);
for(i=0;i<=d;i++)
{
c[i+1]+=c[i]/10;
c[i]%=10;
}
for(i=5000;i>=0;i--)
{
if(c[i]!=0)
{
for(j=i;j>=0;j--)
{
printf("%d",c[j]);
}
break;
}
}
printf("\n");
}
}
}