比较两个大整数的大小。
描述
对两个不超过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;
}