2020.03.08 今天是三八婦女節喔
給定任乙個各位數字不完全相同的 4 位正整數,如果我們先把 4 個數字按非遞增排序,再按非遞減排序,然後用第 1 個數字減第 2 個數字,將得到乙個新的數字。一直重複這樣做,我們很快會停在有「數字黑洞」之稱的 6174,這個神奇的數字也叫 kaprekar 常數。
例如,我們從6767開始,將得到
7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174
… …現給定任意 4 位正整數,請編寫程式演示到達黑洞的過程。
輸入格式:
輸入給出乙個 (0,104) 區間內的正整數 n。
輸出格式:
如果 n 的 4 位數字全相等,則在一行內輸出 n - n = 0000;否則將計算的每一步在一行內輸出,直到 6174 作為差出現,輸出格式見樣例。注意每個數字按 4 位數格式輸出。
輸入樣例 1:
輸出樣例 1:7766 - 6677 = 1089輸入樣例 2: 輸出樣例 2:9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
2222 - 2222 = 0000看到了要對每個數進行排序就很自然的想到了sort()函式,又因為要遞增遞減各一次,就用了vector()容器(這裡要注意的是不能直接用vector + 下標 = 值的形式進行賦值,要利用陣列進行初始化),可以使用rbegin() , rend(),其實直接寫乙個陣列然後寫乙個遞減的比較法則放入sort()函式裡面也是一樣的,使用pow()函式a += temp[i] * pow(10 , temp.size() - i - 1);將每一位還原為乙個四位數,可以好好利用這個i,最後就是最煩人的一步,不足四位數的也要按四位輸出,可以迴圈模1000輸出每一位數
注意:1、當n - n = 0時結束迴圈,迴圈結束條件要加上差為0
2、個人感覺必定有一組資料,**一開始直接給的就是6174,所以需要對6174進行標記,**當第一次進入時為true,進入後則將標記改為false
#include
//輸入輸出流標頭檔案
#include
//標準輸入輸出
#include
#include
//數學函式
#include
//c語言字元陣列的字串
#include
//c++標準模板庫的函式
#include
//map對映容器
#include
//無序的map對映容器
#include
//變長陣列容器
#include
//佇列
#include
//棧#include
//c++string類
#include
//set集合
#define size 4
using
namespace std;
//標準命名空間
//可以加入全域性變數或者其他函式
void
output
(int m)
}int
main()
vector<
int>
temp
(num ,num +4)
;int a =
0, b =0;
sort
(temp.
rbegin()
, temp.
rend()
);for(
int i =
0; i < temp.
size()
; i++
)//cout (temp.
begin()
, temp.
end())
;for
(int j =
0; j < temp.
size()
; j++
)//cout << b << endl;
ans = a - b;
output
(a);
cout <<
" - "
;output
(b);
cout <<
" = "
;output
(ans)
; cout << endl;
}return0;
}
第二種方法是在網上看到的,感覺會比較容易理解
#include
#include
intcomp
(const
void
*a,const
void
*b)int
main()
else
num[0]
=(temp /
1000);
num[1]
= temp /
100%10;
num[2]
= temp /10%
10;num[3]
=(temp %10)
;}}return0;
}
PAT 乙級刷題整理 C C
pat 乙級刷題整理 今天將pat乙級題目整理梳理一下,方便以後查閱瀏覽 均為c c 有一些是以前寫的老 可能比較粗糙,有空會慢慢更新 思路和更簡潔的 1001 害死人不償命的 3n 1 猜想 15分 1002 寫出這個數 20分 1003 我要通過!20分 1004 成績排名 20分 1005 繼...
pat 刷題記錄 pat 乙級 刷題 1002
讀入乙個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10 100 在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後乙個拼音數字後沒有空格。123456789098765432...
PAT乙級刷題A B和C
時間限制 1000 ms 記憶體限制 32768 kb 長度限制 100 kb 判斷程式 standard 給定區間 2的31次方,2的31次方 內的3個整數a b和c,請判斷a b是否大於c。輸入第1行給出正整數t 10 是測試用例的個數。隨後給出t組測試用例,每組佔一行,順序給出a b和c。整數...