[BOJ] - 1110



問題1110


0以上99以下の整数を指定すると、次の演算が可能になります.与えられた数字が10より小さい場合は、前に0を加えて2桁にし、各桁の数字を加える.そして,与えられた数字の右端桁を先に求めたプロトコルの右端桁に加算することで,新しい数字を生成することができる.次の例を見てみましょう.
26から始まります.2+6=8.新しい数字は68です.6+8=14.新数は84です.8+4=12.新しい数字は42です.4+2=6.新しい数は26です.
上の例は4回で元の数に戻ることができます.したがって、26の周期長は4である.
Nが与えられた場合、Nの周期長を求めるプログラムを作成してください.

入力


1行目はNです.Nは0以上、99以下の整数である.

しゅつりょく


1行目にNのサイクル長を出力する.

コード#コード#


#숫자 입력받기
n = int(input()) # 26


first = n # 변수 설정 즉 고정. 26
cnt = 0

while True:

   #n이 계속 변함 . 반복
    a = n // 10 #일의 자리수 받기
    b = n % 10 # 십의 자리수 받기
    
    c = (a+b)% 10 # 일의자리수 
    
    n = (b * 10) + c 
    
    cnt += 1 # 하나씩 올리기
    if (first == n):
        break

print(cnt)

説明:

  • whileを用いてfirstとn相を同時に切断した.
  • 最初は1つの数字を1つの順番に並べたかったので大変でした.
  • の2つの数字を合わせるときにstr型をつけようとするので大変です.
  • はまだ慣れていません...