CodeForces 616A 大数的比较 字符串的使用

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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值