大数比较大小
来源:互联网 发布:js配置文件怎么写 编辑:程序博客网 时间:2024/05/17 07:25
比较大小和排序可以说是编程比较常见的问题,并且对于比较小的数来比较大小(数值不超过数据类型的范围),用编程是很容易实现的,但是当数非常大的时候,比如超过了1000位,我们应该如何处理呢?
给你两个很大的数,你能不能判断出他们两个数的大小呢?
比如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 222222220 0
- 样例输出
a>ba<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<b\n");
else if(a[0]!='-'&&a[c+1]=='-')
printf("a>b\n");
else if(a[0]!='-'&&a[c+1]!='-')
{
if(c<(strlen(a)-c-1))
printf("a<b\n");
else if(c>(strlen(a)-c-1))
printf("a>b\n");
else
for(j=0,k=c+1;j<c,k<strlen(a);j++,k++)
{
if(a[j]-'0'>a[k]-'0')
{
printf("a>b\n");
break;
}
else
if(a[j]-'0'<a[k]-'0')
{
printf("a<b\n");
break;
}
}
if(j>=c&&k>=strlen(a))
{
printf("a==b\n");
}
}
else if(a[0]=='-'&&a[c+1]=='-')
{
if(c<(strlen(a)-c-1))
printf("a>b\n");
else if(c>(strlen(a)-c-1))
printf("a<b\n");
else
for(j=1,k=c+2;j<c,k<strlen(a);j++,k++)
{
if(a[j]-'0'>a[k]-'0')
{
printf("a<b\n");
break;
}
else if(a[j]-'0'<a[k]-'0')
{
printf("a>b\n");
break;
}
}
if(j>=c&&k>=strlen(a))
{
printf("a==b\n");
}
}
}
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==
"0"
)
11.
return
0;
12.
if
(a==b)
13.
cout<<
"a==b"
<<endl;
14.
else
if
(a[0]==
'-'
&&b[0]==
'-'
)
15.
{
16.
if
(a.substr(1,string::npos)>b.substr(1,string::npos)||a.length()>b.length())
17.
cout<<
"a<b"
<<endl;
18.
else
cout<<
"a>b"
<<endl;
19.
}
20.
else
if
(a>
"0"
&&b>
"0"
||a<
"0"
&&b<
"0"
&&a.length()>b.length()||a>b)
21.
cout<<
"a>b"
<<endl;
22.
else
if
(a<
"0"
&&b>
"0"
&&a.length()>b.length()||a>b)
23.
cout<<
"a<b"
<<endl;
24.
25.
}
26.
}
- 大数比较大小
- 比较数字的大小(满足大数比较)
- HLG 1644 比较多个大数的大小
- 比较大数的大小(10**6) c++ python
- poj 2413 How many Fibs? 大数累加模板+字符串模拟大数比较大小
- 比较两数的大小,计算小数依次加到大数的和
- cf(思维题,判断两个大数的大小的比较方法)
- 【大数问题】比大小
- 比大小 大数问题
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- jQuery和javascript的区别
- 两月内关于学习的思考
- 什么是多态
- 抽象的概念
- windows和Linux内存的对齐方式
- 大数比较大小
- 3个抱怨
- IOS之分析网易新闻存储数据(CoreData的使用,增删改查)
- 如何学好C++语言
- cloudera hadoop 4.7 安装手册(实践版)
- 接口的概念
- 经销商管理系统实施日志
- 接口与抽象类的区别
- java学习笔记——关于环境变量JAVA_HOME,Path和Clathpath