Vanya と Cubes
テストごとの制限時間
1 秒
テストごとのメモリ制限
256 メガバイト
入力
標準入力
出力
標準出力
Vanya got nキューブ。彼はそれらからピラミッドを構築することに決めました。 Vanya は次のようにピラミッドを構築したいと考えています。ピラミッドの最上位レベルは 1 個の立方体で構成され、2 番目のレベルは 1?+?2?=?3 個の立方体で構成され、3 番目のレベルは 1?+?2?+ で構成される必要があります。 ?3?=?6 立方体など。したがって、ピラミッドの i 番目のレベルには 1?+?2?+?...?+?(i?-?1)?+?i 立方体が必要です。
Vanya は最大の高さを知りたいと考えています。与えられた立方体を使用して作成できるピラミッドの図です。
入力
最初の行には整数 n (1?≤?n?≤?104) が含まれています。 Vanya に与えられた立方体の数。
出力
ピラミッドの最大可能高さを 1 行に出力します。
サンプル テスト
入力
出力
入力
25
出力
注意
2 番目のサンプルの図:
题意:最高层は 1 個の立方体、第二層は 1?+?2?=?3 個の立方体、第三层は 1?+?2?+?3?=?6 個の立方体、依次递增。 ただし、最初の層には 1?+?2?+?...?+?(i?-?1)?+?i 個の立方体が必要です。1 つの立方体で最大何層を構成できます。
分析;水の問題、直接観察する習慣の問題。目で見て、濃い水を感じ、暴力的ではありません。。最大の層数になり、その後、評価は O (1) になります。了解。
AC代コード:
#include <cstdio>#include <algorithm>using namespace std;int a[10005];int main(){// freopen("in.txt", "r", stdin); int foo = 0; int sum = 0; for(int i=1; ; i++){ int t = foo; if(sum > 10000) break; foo += i; for(int j=0; j<foo && sum+j<=10000 ; j++){ a[sum+j] = i-1; } sum += foo; } int n; while(scanf("%d", &n)==1){ printf("%d\n", a[n]); } return 0;}
、次は水中に入ることができません