1 条题解
-
0
C :
#include<stdio.h> #include<string.h> int X[510],Y[510]; int go(int b,int d) { int c; X[b]=10+d; c=X[b+1]-1; if(c<0) go(b+1,-1); else X[b+1]=c; } int main() { char A[510],B[510]; int a,b,c,x,y,z,i,j,k,l,m,n,o,p,q,r,s,t; while(scanf("%s%s",&A,&B)!=EOF) { memset(X,0,sizeof(X)); memset(Y,0,sizeof(Y)); for(a=0,b=strlen(A)-1;b>=0;a++,b--) X[a]=A[b]-'0'; for(a=0,b=strlen(B)-1;b>=0;a++,b--) Y[a]=B[b]-'0'; for(b=501;b>=0;b--) { c=X[b]-Y[b]; if(c>=0) X[b]=c; else go(b,c); } for(b=501;b>=0&&X[b]==0;b--); if(b<0)printf("0\n"); else { for(b;b>=0;b--) printf("%d",X[b]); printf("\n"); } } return 0; }
C++ :
#include<iostream> #include<cstdlib> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; const int N = 505; char a[N], b[N], t[N]; void sub(char s1[],char s2[],char t[]) { int i,l2,l1,k; l2=strlen(s2);l1=strlen(s1); t[l1]='\0';l1--; for (i=l2-1;i>=0;i--,l1--) { if (s1[l1]-s2[i]>=0) t[l1]=s1[l1]-s2[i]+'0'; else { t[l1]=10+s1[l1]-s2[i]+'0'; s1[l1-1]=s1[l1-1]-1; } } k=l1; while(s1[k]<0) {s1[k]+=10;s1[k-1]-=1;k--;} while(l1>=0) {t[l1]=s1[l1];l1--;} loop: if (t[0]=='0') { l1=strlen(s1); for (i=0;i<l1-1;i++) t[i]=t[i+1]; t[l1-1]='\0'; goto loop; } if (strlen(t)==0) {t[0]='0';t[1]='\0';} } int main() { // freopen("in.txt", "r", stdin); // freopen("out.txt", "w", stdout); while(~scanf("%s%s", a, b)) { sub(a, b, t); printf("%s\n", t); } return 0; }
Java :
import java.util.*; import java.math.*; public class Main { public static void main(String[] a) { Scanner cin = new Scanner(System.in); while (cin.hasNext()) { BigInteger b, c; b = cin.nextBigInteger(); c = cin.nextBigInteger(); System.out.println(b.subtract(c)); } } }
- 1
信息
- ID
- 3058
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者