[JavaScript]標準1110号:プラス記号サイクル


ソース

1110番:プラスサイクル(acmicpc.net)
質問する
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
55
サンプル出力2
3
入力例3
1
サンプル出力3
60
入力例4
0
サンプル出力4
1
入力例5
71
サンプル出力5
12
コード#コード#
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString();

let cnt = 0;
let num = input;

while(1) {
    let sum = parseInt(num/10) + (num%10); // 각 자릿수의 합
    num = (num%10)*10 + (sum%10); // 입력값의 가장 오른쪽 자릿수와 앞에서 구한 합의 가장 오른쪽 자릿수를 이어 붙인 새로운 수

    cnt++;

    if (num==input) {
        break;
    }
}

console.log(cnt);
Math.flower()-リンクを追加!
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString();

let cnt = 0;
let num = input;

while(1) {
    let sum = Math.floor(num / 10) + num % 10; // 각 자릿수의 합
    num = (num%10)*10 + (sum%10); // 입력값의 가장 오른쪽 자릿수와 앞에서 구한 합의 가장 오른쪽 자릿수를 이어 붙인 새로운 수

    cnt++;

    if (num==input) {
        break;
    }
}

console.log(cnt);