本文主要是介绍1023 Have Fun with Numbers(20分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目翻译:
给定一个不超过20位的正整数,将其2倍后得到的正整数进行判断,如果组成两者的元素相同(仅仅排列方式不同),则输出“Yes",否则输出”No"。
题解思路:
由于不超过20位,而unsigned long long最多支持19位,因此可以分情况讨论。最后排序一下即可。
代码:
#include<bits/stdc++.h>
using namespace std;int main()
{string s, s2;cin >> s;int p = s.size();if (p <= 18||(p ==19&&s[0]<'5'))s2 = to_string(stoll(s) * 2);else{string t1 = s.substr(0, 10), t2 = s.substr(10);unsigned long long t3 = stoll(t1) * 2, t4 = stoll(t2) * 2;if (t2[0] >= '5')s2 = to_string(t3 + 1) + to_string(t4).substr(1);elses2 = to_string(t3) + to_string(t4);}string temp = s2;sort(s.begin(), s.end());sort(s2.begin(), s2.end());if (s == s2)cout << "Yes" << endl << temp;elsecout << "No" << endl << temp;
}
坑点:
无
这篇关于1023 Have Fun with Numbers(20分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!