146


풀이
문제에 주어진 규칙에 따라 수를 계산하면서 사이클을 1씩 더하고 출력하는 문제입니다.
규칙 : 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙여 새로운 수를 만든다.
코드
C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h> int main() { int ogn, chg, tmp, a, b, c, cycle = 0; scanf ( "%d" , &ogn); tmp = ogn; while (1) { a = tmp/10; b = tmp%10; c = a + b; chg = b * 10 + c % 10; cycle++; if (ogn == chg) break ; else tmp = chg; } printf ( "%d" , cycle); return 0; } |
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <iostream> using namespace std; int main() { int ogn, chg, a, b, c, cycle = 0; cin >> ogn; int tmp = ogn; while (1) { a = tmp/10, b = tmp%10, c = a + b; chg = b * 10 + c % 10; cycle++; if (ogn == chg) { break ; } else { tmp = chg; } } cout << cycle; return 0; } |
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import java.util.*; class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); int ogn = sc.nextInt(); int cycle = 0 , tmp = ogn; while ( true ) { int a = tmp/ 10 , b = tmp% 10 , c = a + b; int chg = b * 10 + c % 10 ; cycle++; if (ogn == chg) { break ; } else { tmp = chg; } } System.out.println(cycle); } } |
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ogn = int ( input ()) cycle = 0 tmp = ogn while True : a = tmp / / 10 b = tmp % 10 c = a + b chg = b * 10 + c % 10 cycle + = 1 if ogn = = chg: break else : tmp = chg print (cycle) |
문제 출처
https://www.acmicpc.net/problem/1110