您的位置 首页 > 腾讯云社区

1019. 数字黑洞 (20)---AI那点小事

给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。

例如,我们从6767开始,将得到

7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 7641 - 1467 = 6174 … …

现给定任意4位正整数,请编写程序演示到达黑洞的过程。

输入格式:

输入给出一个(0, 10000)区间内的正整数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

#include <iostream> using namespace std; bool IsSame( int a) { int num[4]; for ( int i = 0 ; i < 4 ; i++){ num[i] = a % 10; a /= 10; } int tmp = num[0]; int count = 1; for ( int i = 1 ; i < 4 ; i++){ if (num[i] == tmp){ count++; } } if ( count == 4){ return true; }else{ return false; } } int NotMaxSort(int Num) { int num[4]; for ( int i = 0 ; i < 4 ; i++){ num[i] = Num % 10; Num /= 10; } for ( int i = 0 ; i < 3 ; i++){ for ( int j = i + 1 ; j < 4 ; j++){ if ( num[j] >= num[i] ){ num[i] = num[i] + num[j]; num[j] = num[i] - num[j]; num[i] = num[i] - num[j]; } } } int sum = 0; for ( int i = 0 ; i < 4 ; i++){ sum = sum * 10 + num[i]; } return sum; } int NotMinSort(int Num) { int num[4]; for ( int i = 0 ; i < 4 ; i++){ num[i] = Num % 10; Num /= 10; } for ( int i = 0 ; i < 3 ; i++){ for ( int j = i + 1 ; j < 4 ; j++){ if ( num[j] <= num[i] ){ num[i] = num[i] + num[j]; num[j] = num[i] - num[j]; num[i] = num[i] - num[j]; } } } int sum = 0; for ( int i = 0 ; i < 4 ; i++){ sum = sum * 10 + num[i]; } return sum; } int main() { int Num; cin>>Num; if ( IsSame(Num) == false){ int a ,b ,c; do{ a = NotMaxSort(Num); b = NotMinSort(Num); c = a - b; cout<<a<<" - "; if ( b == 0 ){ cout<<"0000 = "<<c<<endl; }else{ if ( b / 10 == 0){ cout<<"000"<<b<<" = "<<c<<endl; }else{ if ( b / 100 == 0){ cout<<"00"<<b<<" = "<<c<<endl; }else{ if ( b / 1000 == 0){ cout<<"0"<<b<<" = "<<c<<endl; }else{ cout<<b<<" = "<<c<<endl; } } } } Num = c; }while( c != 6174); } else{ cout<<Num<<" - "<<Num<<" = 0000n"; } return 0; }

(PS:图中显示的错误实在找不出来了。)

---来自腾讯云社区的---AI那点小事

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: