본문 바로가기

알고리즘/백준

백준 1110 더하기사이클 - while문, 수학 문제 (c++)

728x90

문제 링크

https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 =

www.acmicpc.net

십의자리수와 일의자리수를 가지고 장난치면서, 원래 입력받았던 수와 같아지는지 알아보는 문제이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main(void){
    int N,temp;
    cin>>N;
    int answer=0;
    temp=N;
    while(true){
        int ten = temp/10;
        int one = temp%10;
        if((ten+one)%10+10*one==N)
            break;
        else{
            answer++;
            temp = (ten+one)%10+10*one;
        }
    }
    cout<<answer+1;
}