Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

d 크기로 만들 수 있는 십이각형의 수를 세는 C++ 프로그램

<시간/>

숫자 d가 있다고 가정합니다. 정사각형 타일과 변의 길이가 1인 정삼각형 타일이 무한히 있다고 가정합니다. 이 타일을 사용하여 변이 d인 정십이각형(12면 다각형)을 만들 수 있는 방법의 수를 찾아야 합니다. 답이 너무 크면 결과 모드 998244353을 반환합니다.

d 크기로 만들 수 있는 십이각형의 수를 세는 C++ 프로그램

단계

이 문제를 해결하기 위해 다음 단계를 따르겠습니다-

b := floor of d/2 - 1
c := 1
for initialize i := 2, when i < d, update (increase i by 1), do:
   b := b * (floor of d/2)
   c := c * i
return (b / c)

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;

int solve(int d){
   int b = ((d << 1) - 1);
   int c = 1;
   for (int i = 2; i < d; i++){
      b *= (d << 1) - i;
      c *= i;
   }
   return (b / c);
}
int main(){
   int d = 1;
   cout << solve(d) << endl;
}

입력

1

출력

1