페이지

7770번: 아즈텍 피라미드

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


$O(n^{1/3})$

기울인 정사각형 모양으로 쌓으면 된다.
n층을 쌓기 위해선 n*(2*n*n+1)/3 개의 블럭이 필요


#include<cstdio>
int f(long long x) { return x*(2 * x*x + 1) / 3; }
int n, i;
int main() {
    scanf("%d", &n);
    while (f(++i) <= n);
    printf("%d", i - 1);
    return 0;
}

댓글 없음 :

댓글 쓰기