문제 풀이/C#

[17520] - Balanced String

Chamber 2022. 9. 26. 19:06

https://www.acmicpc.net/problem/17520

 

17520번: Balanced String

0과 1로 이루어진 이진 문자열 0101101은 0과 1의 개수의 차이가 1 이하이다. 뿐만 아니라, 첫 번째 문자를 포함하는 모든 부분 문자열 0, 01, 010, 0101, 01011, 010110, 0101101 모두 0과 1의 개수의 차이가 1 이

www.acmicpc.net

 

문제 풀이
0과 1의 개수의 차가 1이하여야 되니 문자열의 길이 기준으로 1과 0이 각 반개씩 점령하면 된다.

  1. 입력받은 길이가 짝수면 2로 나누고, 홀수일 경우 1을 더한 후 2로 나눔
  2. math.pow 사용시 큰값이 들어왔을 때 nan이 뜨니 반복문으로 하나씩 곱하기
using System;
using System.Collections.Generic;
using System.Text;

namespace Baekjoon.silver
{
    class _17520
    {
        static void Main_17520(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            if (n % 2 == 0)
                n /= 2;
            else
                n = n / 2 + 1;
            long sum = 1;
            for (int i = 0; i < n; i++)
                sum = sum * 2 % 16769023;
            Console.WriteLine(sum);
        }
    }
}