比大小
比大小
時間限製:3000 ms | 內存限製:65535 KB
難度:2
- 描述
-
給你兩個很大的數,你能不能判斷出他們兩個數的大小呢?
比如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
查看代碼---運行號:253115----結果:Accepted
運行時間:2012-10-07 22:45:05 | 運行人:huangyibiao
01.
#include <iostream>
02.
#include <string>
03.
04.
using
namespace
std;
05.
06.
int
main()
07.
{
08.
string a, b;
09.
10.
while
(cin >> a >> b && (a !=
"0"
|| b !=
"0"
))
11.
{
12.
int
lena = a.size();
13.
int
lenb = b.size();
14.
int
i;
15.
16.
if
(a[0] ==
'-'
&& b[0] ==
'-'
)
//兩個負數
17.
{
18.
if
(lena > lenb)
19.
cout <<
"a<b\n"
;
20.
else
if
(lena < lenb)
21.
cout <<
"a>b\n"
;
22.
else
//從高位開始比較,第一個出現大的就是較小的數
23.
{
24.
for
(i = lena-1; i >= 0; i--)
25.
{
26.
if
(a[i] > b[i])
27.
{
28.
cout <<
"a<b\n"
;
29.
break
;
30.
}
31.
else
if
(a[i] < b[i])
32.
{
33.
cout <<
"a>b\n"
;
34.
break
;
35.
}
36.
}
37.
if
(i == -1)
38.
cout <<
"a==b\n"
;
39.
}
40.
}
41.
else
if
(a[0] !=
'-'
&& b[0] !=
'-'
)
//兩個正數
42.
{
43.
if
(lena > lenb)
44.
cout <<
"a>b\n"
;
45.
else
if
(lena < lenb)
46.
cout <<
"a<b\n"
;
47.
else
48.
{
49.
for
(i = lena-1; i >= 0; i--)
50.
{
51.
if
(a[i] > b[i])
52.
{
53.
cout <<
"a>b\n"
;
54.
break
;
55.
}
56.
else
if
(a[i] < b[i])
57.
{
58.
cout <<
"a<b\n"
;
59.
break
;
60.
}
61.
}
62.
if
(i == -1)
63.
cout <<
"a==b\n"
;
64.
}
65.
}
66.
else
if
(a[0] ==
'-'
&& b[0] !=
'-'
)
//a為正數,b為負數
67.
cout <<
"a<b\n"
;
68.
else
if
(a[0] !=
'-'
&& b[0] ==
'-'
)
69.
cout <<
"a>b\n"
;
70.
}
71.
return
0;
72.
}
最後更新:2017-04-02 15:14:57