Comparing Two LongIntegers
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Youare given two very long integers a, b (leadingzeroes are allowed). You should check what number a or b isgreater or determine that they are equal.
Theinput size is very large so don't use the reading of symbols one by one.Instead of that use the reading of a whole line or token.
Asinput/output can reach huge size it is recommended to use fast input/outputmethods: for example, prefer to use scanf/printfinsteadof cin/cout inC++, prefer to use BufferedReader/PrintWriter instead of Scanner/System.out in Java.Don't use the function input() in Python2 insteadof it use the function raw_input().
Input
Thefirst line contains a non-negative integer a.
Thesecond line contains a non-negative integer b.
Thenumbers a, b may containleading zeroes. Each of them contains no more than 106 digits.
Output
Printthe symbol "<" if a < b andthe symbol ">" if a > b.If the numbers are equal print the symbol "=".
Examples
input
9
10
output
<
input
11
10
output
>
input
00012345
12345
output
=
input
0123
9
output
>
input
0123
111
output
>
题意:就是两个非负大整数比较大小。
思路:去掉前面的 0 即可,应该熟练使用字符串类函数
代码:
/*=============================AC情况===============================*/
/*题目网址: */
/*时间: */
/*心得: 掌握strlen(),strcmp()的参数意义 */
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define G 1000013
int main() {
char a[G],b[G];
int la,lb;
scanf("%s",a);
int ka=0;
while(a[ka]=='0') ka++;
la=strlen(a+ka);
scanf("%s",b);
int kb=0;
while(b[kb]=='0') kb++;
lb=strlen(b+kb);
if(la>lb) printf(">\n");
else if(la<lb) printf("<\n");
else {
if(strcmp(a+ka,b+kb)<0) printf("<\n");
if(strcmp(a+ka,b+kb)==0) printf("=\n");
if(strcmp(a+ka,b+kb)>0) printf(">\n");
}
return 0;
}
/*********************************测试数据*********************************
**************************************************************************/
第117组测试数据错误(超时)代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define G 1000001
int main() {
char a[G],b[G];
char a2[G],b2[G];
int la,lb,ca,cb;
scanf("%s",a);
scanf("%s",b);
la=strlen(a);
lb=strlen(b);
int k=0;
while(a[k]=='0') k++;
ca=la-k;
for(int j=k,l=0; j<la; j++,l++)
a2[l]=a[j];
k=0;
while(b[k]=='0') k++;
cb=lb-k;
for(int j=k,l=0; j<lb; j++,l++)
b2[l]=b[j];
// printf("%d %d",ca,cb);
if(ca>cb) printf(">\n");
else if(ca<cb) printf("<\n");
else {
if(strcmp(a2,b2)<0) printf("<\n");
if(strcmp(a2,b2)==0) printf("=\n");
if(strcmp(a2,b2)>0) printf(">\n");
}
return 0;
}