

풀이과정
입력 받은 N이 10보다 작다면 iNum1=0, iNum2 =N;
10의자리를 나타내는 iNum1에 0을 1의 자리를 나타내는 iNum2에 N의 값을 대입해준다.
입력 받은 N이 10보다 크다면 (N>=10), iNum1 = N/10, iNum2 = N%10;
10의자리를 나타내는 iNum1에 N을 10으로 나눈 몫을 1의 자리를 나타내는 iNum2에 N을 10으로 나눈 나머지를 대입해준다.
진행하는 연산을 설명하자면
A(10의자리) , B(1의자리) , C (A+B를 10으로 나눈 나머지) , D (A+B를 10으로 나눈 몫)
A B = D C 로 다음 연산의 A=B, B=C 가 된다.
이 과정을 처음 A B값이 나올 때 까지 반복한 횟수를 구하면 된다.
코드
더보기
#include <iostream>
using namespace std;
int main()
{
int n = 0;
int iNum1 = 0, iNum2 = 0;
int iCurrNum1 = 0, iCurrNum2 = 0;
int iCycle = 0;
cin >> n;
if (n < 10) iNum1 = 0, iNum2 = n;
else iNum1 = n / 10, iNum2 = n % 10;
iCurrNum1 = iNum1;
iCurrNum2 = iNum2;
while (true)
{
int iNewNum = (iCurrNum1 + iCurrNum2) % 10;
iCurrNum1 = iCurrNum2;
iCurrNum2 = iNewNum;
iCycle++;
if (iNum1 == iCurrNum1 && iNum2 == iCurrNum2) break;
}
cout << iCycle << endl;
return 0;
}
'알고리즘(C++) > 백준 알고리즘' 카테고리의 다른 글
| [백준] C++ 11399번 : ATM (0) | 2019.12.03 |
|---|---|
| [백준] C++ 4936번 : 섬의 개수 (0) | 2019.11.20 |
| [백준] C++ 1912번 : 연속합 (0) | 2019.11.20 |
| [백준] C++ 2156번 : 포도주 시식 (0) | 2019.11.19 |
| [백준] C++ 1932번 : 정수 삼각형 (0) | 2019.11.14 |