标题设计网站,免费商标图案设计大全,wordpress转微信,商业中心 网站建设1019 数字黑洞 (20分)
给定任一个各位数字不完全相同的 4 位正整数#xff0c;如果我们先把 4 个数字按非递增排序#xff0c;再按非递减排序#xff0c;然后用第 1 个数字减第 2 个数字#xff0c;将得到一个新的数字。一直重复这样做#xff0c;我们很快会停在有“数字…1019 数字黑洞 (20分)
给定任一个各位数字不完全相同的 4 位正整数如果我们先把 4 个数字按非递增排序再按非递减排序然后用第 1 个数字减第 2 个数字将得到一个新的数字。一直重复这样做我们很快会停在有“数字黑洞”之称的 6174这个神奇的数字也叫 Kaprekar 常数。 例如我们从6767开始将得到 7766 - 6677 1089 9810 - 0189 9621 9621 - 1269 8352 8532 - 2358 6174 7641 - 1467 6174 … … 现给定任意 4 位正整数请编写程序演示到达黑洞的过程。 输入格式
输入给出一个 (0,10 4 ) 区间内的正整数 N。 输出格式
如果 N 的 4 位数字全相等则在一行内输出 N - N 0000否则将计算的每一步在一行内输出直到 6174 作为差出现输出格式见样例。注意每个数字按 4 位数格式输出。 输入样例 1
6767 输出样例 1
7766 - 6677 1089 9810 - 0189 9621 9621 - 1269 8352 8532 - 2358 6174 输入样例 2
2222 输出样例 2
2222 - 2222 0000 #includeiostream
#includestring
#includealgorithm
using namespace std;
bool cmp(char ch, char ch1)
{return ch ch1;
}
int main()
{string str,str1,str2;cin str;int sum 0;str.insert(0, 4 - str.size(), 0);//不足0的话补零do{str1 str;str2 str;sort(str1.begin(), str1.end(),cmp);//降序sort(str2.begin(), str2.end());//升序sum atoi(str1.c_str()) - atoi(str2.c_str());printf(%04s - %04s %04d\n, str1.c_str(), str2.c_str(), sum);strto_string(sum); str.insert(0, 4 - str.size(), 0);//补零} while (str ! 6174 sum ! 0);
}