java版:
import java.math.BigInteger;
import java.util.Scanner;
public class Main
{
static public void main(String[] args)
{
Scanner cin=new Scanner(System.in);
BigInteger a=cin.nextBigInteger();
BigInteger b=cin.nextBigInteger();
System.out.println(a.subtract(b));
cin.close();
}
}
c++版:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 505;
char A[maxn], B[maxn], difference[maxn];
void subtract(char *a, char *b)
{
int a_len = strlen(a);
int b_len = strlen(b);
reverse(a, a + a_len);
reverse(b, b + b_len);
int len = a_len;
for(int i = b_len; i < len; i++)
b[i] = '0';
int c = 0;
for(int i = 0; i < len; i++)
{
int t = (a[i] - '0') - (b[i] - '0') - c;
c = (t < 0);
difference[i] = t + 10 * c + '0';
}
difference[len] = '\0';
while(len > 1 && difference[len - 1] == '0')
difference[--len] = '\0';
reverse(difference, difference + len);
}
int main()
{
while(~scanf("%s%s", A, B))
{
subtract(A, B);
printf("%s\n", difference);
}
return 0;
}