Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 처음 N개의 Iccanobif 수를 구하는 프로그램


이 튜토리얼에서는 처음 N개의 Iccanobif 수를 구하는 프로그램을 작성하는 방법을 살펴보겠습니다.

Iccanobif 수는 피보나치 수와 매우 유사한 수열입니다. 다만 한 가지 중요한 차이점이 있는데, 바로 이전 두 수를 더할 때 각 수의 자릿수를 먼저 뒤집은 후 더한다는 점입니다.

예를 들어 이전 두 항이 13과 39라고 가정해 보겠습니다. 일반적인 피보나치 수열이라면 13 + 39 = 52가 되지만, Iccanobif 수열에서는 13을 뒤집어 31로, 39를 뒤집어 93으로 만든 뒤 더하므로 31 + 93 = 124가 됩니다.

접근 방법

  1. 첫 번째 항을 0, 두 번째 항을 1로 초기화합니다.
  2. 주어진 수의 자릿수를 뒤집는 함수를 작성합니다.
  3. 세 번째 항부터 N번째 항까지 반복하면서, 이전 두 항의 자릿수를 각각 뒤집아 더한 값을 출력하고 두 변수를 갱신해 나갑니다.

예제 코드

#include <bits/stdc++.h>
using namespace std;
// 숫자의 자릿수를 뒤집는 함수
int reverse_digits(int num){
   int rev_num = 0;
   while (num > 0) {
      rev_num = rev_num * 10 + num % 10;
      num = num / 10;
   }
   return rev_num;
}
// 처음 N개의 Iccanobif 수를 출력하는 함수
void icanobifNumbers(int N){
   int first = 0, second = 1;
   if (N == 1)
      cout << first;
   else if (N == 2)
      cout << first << " " << second;
   else {
      cout << first << " " << second << " ";
      for (int i = 3; i <= N; i++) {
         int x = reverse_digits(first);
         int y = reverse_digits(second);
         cout << x + y << " ";
         int temp = second;
         second = x + y;
         first = temp;
      }
   }
}
int main(){
   int N = 12;
   icanobifNumbers(N);
   return 0;
}

출력 결과

0 1 1 2 3 5 8 13 39 124 514 836

위 코드에서 reverse_digits() 함수는 주어진 수의 자릿수를 뒤집는 역할을 담당하며, icanobifNumbers() 함수는 이를 활용하여 처음 N개의 Iccanobif 수를 차례대로 계산하고 출력합니다. 시간 복잡도는 O(N × d)로, 여기서 d는 수의 자릿수를 의미합니다.