白駿90476174
4119 ワード
質問する
1949年にインドの数学者KaprekarがKaprekar演算を発明した.Kaprekar演算は、4桁のすべての桁が等しくない数字(111122222などを除く)の各桁の数字を並べ替え、最大と最小の数字を生成し、その差を計算し、結果として得られた新しい数字で同じ過程を繰り返す.
これは簡単な演算ですが、Kaprekarはこの演算が驚くべき結果を生むことを発見しました.今年の2008年で結果を見てみましょう.2008年の最大の数字は8200で、最小の数字は0028です. 8200 – 0028 = 8172 8721 – 1278 = 7443 7443 – 3447 = 3996 9963 – 3699 = 6264 6642 – 2466 = 4176 7641 – 1467 = 6174 7641 – 1467 = 6174 6174に到達すると、6174が生成される.2008年には6174ではなく、すべての数字ではない4桁がKaprekar演算によって6174になります.2008年の場合は、6つのステップを経て6174に達し、他の数字を入力すると、数ステップで6174に達するプログラムを作成します.
入力
入力は標準入力で受け付けます.入力された第1行は、試験例の個数T(1≦T≦20)を与える.各試験例の1行に4桁(1000~9999)がある.しかし、この数字は111122222のように、1つの数字からなる数字を除く.
しゅつりょく
出力は標準出力で出力されます.各テストケースについて、Kaprekar演算により、各行が1つ出力され、数ステップで6174に達する.
入力例1
3
6174
1789
2005
サンプル出力1
0
3
7
解法
Nを文字列として入力し、Nが6174でなければ繰り返します.
反転したNを整数にするために、Nをリストに変更し、join()を使用して逆さにし、文字列に再変換します.
また,Nは常に4ビットでなければならないので,zfill()関数を用いて3ビット以下の整数であれば,前に0を付けて4ビットとする.
コード#コード#
1949年にインドの数学者KaprekarがKaprekar演算を発明した.Kaprekar演算は、4桁のすべての桁が等しくない数字(111122222などを除く)の各桁の数字を並べ替え、最大と最小の数字を生成し、その差を計算し、結果として得られた新しい数字で同じ過程を繰り返す.
これは簡単な演算ですが、Kaprekarはこの演算が驚くべき結果を生むことを発見しました.今年の2008年で結果を見てみましょう.2008年の最大の数字は8200で、最小の数字は0028です.
入力
入力は標準入力で受け付けます.入力された第1行は、試験例の個数T(1≦T≦20)を与える.各試験例の1行に4桁(1000~9999)がある.しかし、この数字は111122222のように、1つの数字からなる数字を除く.
しゅつりょく
出力は標準出力で出力されます.各テストケースについて、Kaprekar演算により、各行が1つ出力され、数ステップで6174に達する.
入力例1
3
6174
1789
2005
サンプル出力1
0
3
7
解法
Nを文字列として入力し、Nが6174でなければ繰り返します.
反転したNを整数にするために、Nをリストに変更し、join()を使用して逆さにし、文字列に再変換します.
また,Nは常に4ビットでなければならないので,zfill()関数を用いて3ビット以下の整数であれば,前に0を付けて4ビットとする.
コード#コード#
for _ in range(int(input())):
N = input()
result = 0
while N != '6174':
li = sorted(list(map(str, N)))
A, B = int(''.join(li)), int(''.join(li[::-1]))
N = str(B - A).zfill(4)
result += 1
print(result)
白駿90476174Reference
この問題について(白駿90476174), 我々は、より多くの情報をここで見つけました https://velog.io/@mynote/백준-9047-6174テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol