[백준] C# : 오각형, 오각형, 오각형… (1964번)

ssu_hyun·2022년 9월 6일
0

Data Structure & Algorithm

목록 보기
61/67
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Baekjoon
{
    class Program
    {
        static void Main(string[] args)
        {
            // 단계 입력받기
            long n = long.Parse(Console.ReadLine());

            // n단계 점의 개수 
            long result = (1 + 4 * n + (3 * n * (n - 1)) / 2) % 45678;

            // 결과 출력
            Console.WriteLine(result);
        }
    }
}

  • 문제 조건
    • N의 범위가 다음과 같으므로 1 ≤ N ≤ 10,000,000 자료형은 넉넉하게 long을 선택한다.
      • int 자료형 범위 : –2,147,483,648 ~ 2,147,483,647
      • long 자료형 범위 : –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
  • 내가 찾은 규칙
    • 가장 처음은 1(파란색 점) + (오각형 꼭짓점 수 - 1) * 단계수(=n)
    • 단계를 거듭할 수록 위 그림에서 보이듯 (1) 빨간점은 (오각형 꼭짓점 수 - 1)단계수(=n)에 비례해서 늘어나고 (2) 초록점은 `(오각형의 세 변) * (단계수-1)까지 계속 누적하며 늘어난다.
  • 위 규칙을 수식으로 정리하면
    1+4n+k=1n3(k1)\displaystyle1 + 4*n + \sum_{k=1}^{n}{3(k-1)}
    =1+4n+3n(n1)2= \displaystyle1 + 4*n + \frac{3n(n-1)}{2}

0개의 댓글