문제 : https://www.acmicpc.net/problem/2903
(1) 내 해답 : 일반식을 구하여 해결
#include <cstdio>
#include <cmath>
int main()
{
int N = 0;
scanf("%d", &N);
printf("%d\n", (int)(pow( ( pow(2, N + 1) - ( pow(2, N) - 1 ) ) , 2)));
return 0;
}
(2) 다른 해답
- 나와 비슷한 방식의 해답
print((2**int(input())+1)**2)
- 동적 계획법
import sys
input = sys.stdin.readline
dp = [0] * 16
dp[0] = 4
dp[1] = 9
dp[2] = 25
dp[3] = 81
t1 = 9
t2 = 4
n = int(input())
for i in range(4, n + 1):
t2 *= 2
t1 += t2
dp[i] = t1 ** 2
print(dp[n])
- 비트 시프트 연산자 활용
#include <cstdio>
int main() {
int n;
scanf("%d", &n);
printf("%d\n", n*(n = (1 << n) + 1));
}
#include<stdio.h>
int main(){
int t, s, s2;
scanf("%d", &t), s=(1<<t)+1;
printf("%d", s*s);
return 0;
}
n = int(input())
s = (1 << n) + 1
print(s ** 2)
'프로그래밍 > 알고리즘' 카테고리의 다른 글
백준 2501번: 약수 구하기 (0) | 2024.03.20 |
---|---|
백준 5086번: 배수와 약수 (0) | 2024.03.15 |
백준 11005번: 진법 변환 2 (0) | 2024.02.27 |
알고리즘에 많이 쓰이는 함수 & 라이브러리 (0) | 2023.11.09 |
알고리즘 참고 링크 (1) | 2023.11.09 |