白駿2292号(蜂の巣)
1383 ワード
質問する
上の図に示すように、六角形のハニカムがあります.図に示すように、中央の部屋1から隣の部屋に戻り、1を増やすごとに番号を住所とすることができる.数値Nが与えられた場合、セルの中央1からN号室までの間に最小の部屋を通過したときにどの部屋(開始と終了を含む)を通過したかを計算する計算プログラムが作成される.たとえば、13~3個、58~5個です.
入力
第1行はN(1≦N≦10000000)を与える.
しゅつりょく
入力として、最小の部屋を通って所定の部屋に着いたとき、出力は何部屋を通ったかを出力する.
ろんり
例えば、2~7から2つの部屋を通り抜けます.1号室、2~7号室
8~19は3部屋、20~37は4部屋を通ります.
つまり、数字の間にはルールが存在する.
前の数字[2.8.20]後の数字[7,19,37]はルールが見えませんか?
6,12,18,24 ... このように増加します.
以下をコードで表す.
t+=1;
a += 6 * t;
b += 6 * (t+1);
正解
> #include <stdio.h>
int main()
{
//cnt 2인 이유는 2,7부터 시작하기 때문이다. 즉, 이미 2개의 방을 지나 온 것이다.
int a=2,b=7,cnt=2,t=0,n,TF=1;
scanf("%d",&n);
if (n==1){ printf("1"); TF = 0;} // 1인지 판별하기
while (TF){
if (n >= a && n <= b)
{
cnt += t;
printf("%d",cnt);
break;
}
else{
t+=1;
a += 6 * t;
b += 6 * (t+1);
}
}
return 0;
}
Reference
この問題について(白駿2292号(蜂の巣)), 我々は、より多くの情報をここで見つけました https://velog.io/@wau2380/백준-2292번벌집テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol