比大小
时间限制:3000 ms | 内存限制:65535 KB
难度:2
- 描述
-
给你两个很大的数,你能不能判断出他们两个数的大小呢?比如123456789123456789要大于-123456
- 输入
- 每组测试数据占一行,输入两个不超过1000位的10进制整数a,b
数据保证输入的a,b没有前缀的0。
如果输入0 0表示输入结束。测试数据组数不超过10组 - 输出
- 如果a>b则输出“a>b”,如果a<b则输出“a<b”,如果相等则输出“a==b”。
- 样例输入
-
111111111111111111111111111 88888888888888888888 -1111111111111111111111111 22222222 0 0
- 样例输出
-
a>b a<b
1 #include<iostream> 2 #include<stdio.h> 3 #include<string.h> 4 using namespace std; 5 int judge(char *a,char *b) 6 { 7 int l1,l2; 8 l1=strlen(a); 9 l2=strlen(b); 10 if(a[0]==‘-‘&&b[0]==‘-‘) 11 { 12 for(int i=1;i<l1;i++) 13 { 14 if(a[i]>b[i]) 15 return 0; 16 if(a[i]<b[i]) 17 return 1; 18 } 19 return 2; 20 } 21 else 22 { 23 for(int i=0;i<l1;i++) 24 { 25 if(a[i]>b[i]) 26 return 1; 27 if(a[i]<b[i]) 28 return 02; 29 } 30 return 2; 31 } 32 } 33 int main() 34 { 35 char a[1100],b[1100]; 36 while(scanf("%s %s",a,b)) 37 { 38 int flag=1;//2:a==b 1:a>b 0:a<b; 39 if(a[0]==‘0‘&&b[0]==‘0‘) 40 break; 41 else if(a[0]==‘-‘&&b[0]!=‘-‘) 42 flag=0; 43 else if(a[0]!=‘-‘&&b[0]==‘-‘) 44 flag=1; 45 else if(a[0]==‘-‘&&b[0]==‘-‘) 46 { 47 int l1,l2; 48 l1=strlen(a); 49 l2=strlen(b); 50 if(l1<l2) 51 flag=1; 52 else if(l1>l2) 53 flag=0; 54 else if(l1==l2) 55 flag=judge(a,b); 56 57 } 58 else if(a[0]!=‘-‘&&b[0]!=‘-‘) 59 { 60 int l1,l2; 61 l1=strlen(a); 62 l2=strlen(b); 63 if(l1<l2) 64 flag=0; 65 else if(l1>l2) 66 flag=1; 67 else if(l1==l2) 68 flag=judge(a,b); 69 70 } 71 if(flag==2) 72 printf("a==b\n"); 73 if(flag==1) 74 printf("a>b\n"); 75 if(flag==0) 76 printf("a<b\n"); 77 } 78 return 0; 79 }
时间: 2024-10-13 12:38:28