[Swift]バックアップアルゴリズム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のサイクル長を出力する.

入力例1

26

🖨 サンプル出力1

4

入力例2

1

🖨 サンプル出力2

60

入力例3

0

🖨 サンプル出力3

1

📚 私が提出したコード

var input = readLine()!
var inputArr = input.map { Int(String($0))! }
if inputArr.count == 1 {
    inputArr.insert(0, at: 0)
    input = "0\(input)"
}
var count = 0
while true {
    count += 1
    let inputSumArr = String(inputArr[0] + inputArr[1]).map { String($0) }
    let newInput = "\(inputArr[1])\(inputSumArr[inputSumArr.count - 1])"
    if newInput == input {
        break
    }
    inputArr = newInput.map { Int(String($0))! }
}
print(count)

▼▼私が提出したコードの説明

  • readline():キーボード入力値を受け入れる関数
  • readLine()!.map { Int(String($0))! } : キーボードに入力したハングル文字をStringに変換し、Intに変換します.(配列に戻ります.)
  • insert(0,at:0):0に0という要素を挿入します.
  • メモリ:62232 KB
  • 時間:8 ms
  • コード長:452 B