[白俊アルゴリズム]193号「点数を探す」
[白俊アルゴリズム]193号「点数を探す」
質問する
白俊1193号です。
無限大の配列には以下の点数が書かれています.
このように列挙した点数は,1/1→1/2→2/1→3/1→2/2→…の等号順に1番,2番,3番,4番,5番,…の点数となる.
Xが与えられた場合、Xの2番目の点数を求めるプログラムを作成してください.
입력
第1行は、X(1≦X≦1000000)を与える.출력
1行目にスコアを出力します.예제 입력1
1예제 출력1
1/1問題を解く
この問題は
군수열
題です.{1/1}, {1/2, 2/1}, {3/1, 2/2, 1/3}, {1/4, 2/3, 3/2, 4/1}, ...
ビーム中の分数の個数は1,2,3,4,1の順に増大した.
上の情報で問題を解くと.
入力されたXが何番目のビームに属しているかを見つけます.
見つかったN番目の束の最初の数字は何ですか.
次に、クラスタの数番目の後にXを見つけます.
Nが偶数の場合は、配列から対角線方向に沿って上に下がります.(分母減少、分子増加)
nが奇数の場合、配列の下から対角線方向に上向きになります.(分母増加、分子減少)
スコアを計算して出力します.
x = int(input())
num = 0
variable_add = 1
n = 0
while num < x:
num += variable_add
n += 1
variable_add += 1
first_index = num-(variable_add-1)+1
N_th = x - first_index
if n % 2 == 0:
a = 1 + N_th
b = n - N_th
else:
a = n - N_th
b = 1 + N_th
print('%d/%d'%(a,b))
Reference
この問題について([白俊アルゴリズム]193号「点数を探す」), 我々は、より多くの情報をここで見つけました https://velog.io/@lej4545/백준-알고리즘1193번-분수찾기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol