[boj](b 2)2292ハニカム


インプリメンテーション

質問する


リンク

に答える


蜂の巣の真ん中から次の層へ
中心:1(1)
layer1 : 2 ~ 7 (6)
layer2 : 8 ~ 19 (12)
layer3 : 20 ~ 37 (18)
各layerが入る最大数を求め,Nがそこにあるか否かを判断する.
(Nが1の場合はレイヤーカテゴリにないので個別に出力)

コード#コード#

#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int N, layer=0;
    cin >> N;

    if(N==1){
        cout << 1 << "\n";
        return 0;
    }

    while(1)
    {
        layer ++;

        int max=1;
        for(int j=1;j<=layer;j++){
            max += 6*j;
        }
        if(N <= max) break;
    }

    cout << layer+1 << "\n";

    return 0;
}