1804 - 比大小
时间限制 : 3 秒
内存限制 : 128 MB
给你两个很大的数,你能不能判断出他们两个数的大小呢?
比如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
C语言解答
#include <stdio.h> #include <string.h> int main(){ int f,m,n; char a[1002],b[1002]; while(scanf("%s %s",a,b),a[0]!='0'||b[0]!='0'){ m=strlen(a); n=strlen(b); if(a[0]=='-'&&b[0]!='-') f=-1; else if(a[0]!='-'&&b[0]=='-') f=1; else if(m>n) f=a[0]=='-'?-1:1; else if(m<n) f=a[0]=='-'?1:-1; else{ f=strcmp(a,b); if(f&&a[0]=='-') f=f==-1?1:-1; } printf("a%sb\n",f<0?"<":(f==1?">":"==")); } return 0; }
C++解答
#include<stdio.h> #include<string.h> #include<stdlib.h> int main() { char a[1000],b[1000]; int flag,count=0,len_a,len_b; while (1) { scanf("%s %s",&a,&b); len_a = strlen(a); len_b = strlen(b); if(a[0] == '0' && b[0] == '0') { break; printf("\n"); } else if(a[0]=='-'&&b[0]=='-') { if(len_a<len_b) printf("a>b"); else if(len_a>len_b) printf("a<b"); else { flag = strcmp(a,b); if(flag>0) printf("a<b"); else if(flag==0) printf("a==b"); else printf("a>b"); } printf("\n"); } else if(a[0]!='-'&&b[0]!='-') { if(len_a<len_b) printf("a<b"); else if(len_a>len_b) printf("a>b"); else { flag = strcmp(a,b); if(flag>0) printf("a>b"); else if(flag==0) printf("a==b"); else printf("a<b"); } printf("\n"); } else { flag = strcmp(a,b); if(flag>0) printf("a>b"); else if(flag<0) printf("a<b"); printf("\n"); } } }