閱讀65 返回首頁    go 阿裏雲 go 技術社區[雲棲]


比大小

比大小

時間限製: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

  上一篇:go 解壓“加密”壓縮包辦法
  下一篇:go Win7優化誤區一覽