728x90
1의 자리 수와 그 전에 더했던 숫자를 계속해서 더하면서 원래 숫자가 나올때까지 몇번 반복해야하는지 찾는 문제입니다.
26의 경우
2 + 6 = 8 68
6 + 8 = 14 84
8 + 4 = 12 42
4 + 2 = 6 26
4번의 순환을 통해 찾았습니다.
a = 10의 자리 수
b = 1의 자리 수
c = a+b를 더한 후 1의 자리 수
d = 합쳐진 수
6 + 8 = 14 84 를 예로 들면
a = 6
b = 8
c = 4
d = 84
입니다.
#include <iostream>
using namespace std;
int main(int argc, char * argv[])
{
int x;
int a, b, c, d;
int count = 0;
cin >> x;
d = x;
while (d != x || count == 0) {
a = d / 10;
b = d % 10;
c = (a + b) % 10;
a = b;
b = c;
d = a * 10 + b;
count++;
}
cout << count << "\n";
return 0;
}
'알고리즘' 카테고리의 다른 글
[C++] 백준 2908번 상수 (0) | 2019.03.05 |
---|---|
[C++] 백준 4673번 셀프 넘버 (0) | 2019.03.05 |
[C++] 백준 4344번 평균은 넘겠지 (0) | 2019.03.05 |
[C++] 백준 1546번 평균 (0) | 2019.03.05 |
[C++] 백준 10871번 X보다 작은 수 (0) | 2019.03.05 |