高精度数比较 求解不会c++

比较两个大整数的大小。
描述

对两个不超过200位的非负整数比较大小。

输入描述:

输入共 2 行
每行是一个不超过 200 位的非负整数,不含有多余的前导 0。

输出描述:

一行,即比较后的结果。
两个数字间的大小关系用 “=”、“<”和“>”表示,数字与符号之间空一格。

输入样例:

22222222222222222222
33333333333333333333
输出样例:

22222222222222222222 < 33333333333333333333

#include <iostream>
#include <string>
using namespace std;

int main(){

  string s1,s2;
  cin >> s1 >> s2;

  int len1 =  ??     ; // s1的位数
  int len2 =  ??     ; // s2的位数

  if(     ??         ){ // 两字符串完全相同
    cout << s1 << " = " << s2;
  }else if(    ??   ||    ??      ){ // 位数多  或者  位数相同比大小
    cout << s1 << " < " << s2;
  }else{
    cout << s1 << " > " << s2;
  }

  return 0;
}




#include <iostream>
#include <string>
using namespace std;
 
int main(){
 
  string s1,s2;
  cin >> s1 >> s2;
 
  int len1 = s1.length()     ; // s1的位数
  int len2 =  s2.length()      ; // s2的位数
 
  if(    s2.compare(s1)==0       ){ // 两字符串完全相同
    cout << s1 << " = " << s2;
  }else if(   len1 < len2   || ( len1==len2 && s2.compare(s1)>0  ) ){ // 位数多  或者  位数相同比大小
    cout << s1 << " < " << s2;
  }else{
    cout << s1 << " > " << s2;
  }
 
  return 0;
}

当成字符串比较就行了。先比长度,然后逐个比字符

#include <iostream>
#include <string>

using namespace std;

int compare(const string &s1, const string &s2)
{
    size_t len1 = s1.length();
    size_t len2 = s2.length();
    int r = len1 - len2;
    if (r != 0)
        return r;
    for (size_t i = 0; i < len1; i++)
    {
        r = s1[i] - s2[i];
        if (r != 0)
            return r;
    }
    return 0;
}

int main()
{
    string s1, s2;
    cin >> s1 >> s2;
    int r = compare(s1, s2);
    if (r < 0)
        cout << s1 << " < " << s2 << endl;
    else if (r == 0)
        cout << s1 << " = " << s2 << endl;
    else
        cout << s1 << " > " << s2 << endl;
    return 0;
}