BOJ 1110 더하기 사이클

1 개요[ | ]

BOJ 1110 더하기 사이클
  • 원래의 값이 나올 때까지 특정한 계산과정을 반복하고 그 횟수를 세는 문제
  • 알고리즘 분류: 수학

2 C++[ | ]

#include <iostream>
using namespace std;
int nextNumber(int n) {
    int p = n / 10;
    int q = n % 10;
    return 10*q + (p+q)%10;
}
int main() {
    int N;
    scanf("%d", &N);
    int num = N;
    int count = 0;
    while(true) {
        count++;
        num = nextNumber(num);
        if( num == N ) break;
    }
    printf("%d", count);
}

3 Java[ | ]

import java.util.*;
public class Main {
    private static int getNextNumber(int n) {
        int p = n / 10;
        int q = n % 10;
        int sum = p + q;
        return q * 10 + sum % 10;
    }
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = n;  
        int cycle = 0;
        while( cycle == 0 || n != m ) {
            m = getNextNumber(m);
            cycle++;
            //System.out.println("cycle="+cycle+", m="+m);
        }
        System.out.println(cycle);
    }
}

4 Perl[ | ]

sub get_next_number {
    my $n = shift;
    $p = int($n / 10);
    $q = $n % 10;
    $q * 10 + ($p + $q) % 10;
}
$n = int(<>);
$m = $n;
$cycle = 0;
while ( $cycle eq 0 || $n ne $m ) {
    $m = get_next_number($m);
    $cycle++;
}
printf("%d\n", $cycle);

5 PHP[ | ]

<?php
function get_next_number($n) {
    $p = intdiv($n,10);
    $q = $n % 10;
    return $q*10 + ($p+$q)%10;
}
fscanf(STDIN,'%d',$n);
$m = $n;
$cycle = 0;
while( $cycle == 0 || $n != $m ) {
    $m = get_next_number($m);
    $cycle++;
}
echo $cycle;

6 Python[ | ]

def get_next_number(n):
    p = n // 10
    q = n % 10
    return q*10 + (p+q)%10
n = int(input())
m = n
cycle = 0
while cycle == 0 or n != m:
    m = get_next_number(m)
    cycle += 1
print( cycle )
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}