加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数比较大小

发布时间:2020-12-14 02:57:56 所属栏目:大数据 来源:网络整理
导读:比较大小和排序可以说是编程比较常见的问题,并且对于比较小的数来比较大小(数值不超过数据类型的范围),用编程是很容易实现的,但是当数非常大的时候,比如超过了1000位,我们应该如何处理呢? 描述 给你两个很大的数,你能不能判断出他们两个数的大小呢

比较大小和排序可以说是编程比较常见的问题,并且对于比较小的数来比较大小(数值不超过数据类型的范围),用编程是很容易实现的,但是当数非常大的时候,比如超过了1000位,我们应该如何处理呢?

描述

给你两个很大的数,你能不能判断出他们两个数的大小呢?

比如123456789123456789要大于-123456

输入
每组测试数据占一行,输入两个不超过1000位的10进制整数a,b
数据保证输入的a,b没有前缀的0。
如果输入0 0表示输入结束。测试数据组数不超过10组
输出
如果a>b则输出“a>b”,如果a<b则输出“a<b”,如果相等则输出“a==b”。
样例输入
222222222222222222222222211 88888888888888888888
-2222222222222222222222222  22222222
0 0
样例输出
a>b
a<b
当看到这个题的时候,我首先想到的是利用数组,然后再把数分为几种情况,进行比较。

自己写的代码(有点长)

#include<stdio.h>
#include<string.h>
int main(void)
{

int i,j,k,c;
while(1)
{
char a[2000];
c=0;
gets(a);
if(a[0]=='0'&&a[2]=='0')
return 0;
for(int i=0;i<strlen(a);i++)
if(a[i]!=' ')
c++;
else
break;
if(a[0]=='-'&&a[c+1]!='-')
printf("a<bn");
else if(a[0]!='-'&&a[c+1]=='-')
printf("a>bn");
else if(a[0]!='-'&&a[c+1]!='-')
{
if(c<(strlen(a)-c-1))
? ? ? ? ? ? ? ? ?printf("a<bn");
else if(c>(strlen(a)-c-1))
printf("a>bn");
else
for(j=0,k=c+1;j<c,k<strlen(a);j++,k++)
{
if(a[j]-'0'>a[k]-'0')
{
printf("a>bn");
break;
}
else?
if(a[j]-'0'<a[k]-'0')
{
printf("a<bn");
break;
}

}
if(j>=c&&k>=strlen(a))


{
printf("a==bn");

}
}
else if(a[0]=='-'&&a[c+1]=='-')
{
if(c<(strlen(a)-c-1))
? ? ? ? ? ? ? ? ?printf("a>bn");
else if(c>(strlen(a)-c-1))
printf("a<bn");
else
for(j=1,k=c+2;j<c,k++)
{
if(a[j]-'0'>a[k]-'0')
{
printf("a<bn");
break;
}
else if(a[j]-'0'<a[k]-'0')
{
printf("a>bn");
break;
}

}
? ? ? ? ? ? ? ?if(j>=c&&k>=strlen(a))
{
printf("a==bn");

}
}
}
return 0;
}

最优代码(使用c++写的)

01. #include<iostream>
02. #include<string>
03. using?namespace?std;
04. ?
05. int?main()
06. {
07. string a,b;
08. while(cin>>a>>b)
09. {
10. if(a=="0"&&b==)
11. return?0;
12. (a==b)
13. cout<<"a==b"<<endl;
14. else?(a[0]=='-'&&b[0]==15. 16. (a.substr(1,string::npos)>b.substr(1,string::npos)||a.length()>b.length())
17. "a<b"18. else?"a>b"<<endl;
19. }
20. (a>&&b>||a<&&b<&&a.length()>b.length()||a>b)
21. 22. (a<23. 24. ?
25. 26. }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读