PAT甲級真題1069 數字黑洞(巧妙解法)
對於任何各位數字不完全相同的四位整數,我們將該數字的四個數位按非升序排列,得到一個數字,再按非降序排列,得到另一個數字,將兩個數字相減就能得到一個新的數字。
不斷重複這個過程,我們就能得到數字6174 ---- 這是四位數字的黑洞。
例如,給定數字 6767,過程如下:
7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174
… …
給定任意一個四位數字,請你輸出它進入黑洞的過程。
輸入格式
包含一個正整數 NN。
注意,給定數字 NN 如果不足四位,則補充前導 00 至四位為止。
輸出格式
如果 NN 的四位數字都相同,則輸出一行 N - N = 0000。
否則,每行輸出一個操作步驟,直到出現 61746174 作為差值產生為止。
所有數字都必須輸出為四位數字。
資料範圍
0<N<100000<N<10000
輸入樣例1:
6767
輸出樣例1:
7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
輸入樣例2:
2222
輸出樣例2:
2222 - 2222 = 0000
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> get(int n)
{
int nums[4];
for (int i = 0; i < 4; i ++ )
{
nums[i] = n % 10;
n /= 10;
}
sort(nums, nums + 4);
int a = 0;
for (int i = 0; i < 4; i ++ ) a = a * 10 + nums[i];
reverse(nums, nums + 4);
int b = 0;
for (int i = 0; i < 4; i ++ ) b = b * 10 + nums[i];
return {b, a};
}
int main()
{
int n;
cin >> n;
do
{
vector<int> t = get(n);
printf("%04d - %04d = %04d\n", t[0], t[1], t[0] - t[1]);
n = t[0] - t[1];
} while (n && n != 6174);
return 0;
}
相關文章
- 2020年7月第2題 PAT甲級真題 The Judger (25分)
- PAT1019 數字黑洞(java實現)Java
- PAT-B 1019 數字黑洞【陣列+模擬】陣列
- PAT甲級1032 Sharing
- PAT甲級考試題庫題目分類
- PAT甲級1030 Travel Plan
- 浙大PAT甲級考試
- PAT甲級1023 Have Fun with Number
- java解決數字黑洞問題Java
- 2024 秋季PAT認證甲級(題解A1-A4)
- 【PAT乙級】1048 數字加密加密
- PAT 甲級 1152 Google Recruitment (20分)GoUI
- 20年春季甲級pat考試
- PAT甲級-1015. Reversible Primes (20)
- 19年春季第二題 PAT甲級 1157 Anniversary(25 分)
- PAT甲級1126~1130|C++實現C++
- 數字10的黑洞
- 數字5的黑洞
- PAT甲級-1014. Waiting in Line (30)(模擬)AI
- 【PAT甲級A1084】Broken Keyboard (20分)(c++)C++
- 1019 數字黑洞 (20 分)javaJava
- 【PAT甲級A1038】Recover the Smallest Number (30分)(c++)C++
- PAT甲級1122 Hamiltonian Cycle (25分)|C++實現C++
- PAT甲級1154 Vertex Coloring (25分)|C++實現C++
- PAT甲級-1140. Look-and-say Sequence (20)(模擬)
- 2021.9.12週六PAT甲級考試覆盤與總結
- PAT甲級1110 Complete Binary Tree (25分)|C++實現C++
- 2019年9月8日秋季PAT甲級題解-2-1161-Merging Linked Lists (25 分)
- PAT-B 1069 微博轉發抽獎【模擬+集合】
- 菜鳥記錄:c語言實現PAT甲級1010--RadixC語言
- 【PAT甲級A1065】A+B and C (64bit) (20分)(c++)C++
- [PAT B] 1012 數字分類
- (非原創)PAT甲級1123 Is It a Complete AVL Tree (30分)|C++實現C++
- PAT(甲級)2020年秋季考試 7-1 Panda and PP Milk (20分)
- PAT-B 1048 數字加密【字串】加密字串
- PAT1044火星數字(java實現)Java
- PAT1048數字加密(java實現)加密Java
- 一道數學題的解法