白俊2292号です.

997 ワード

白駿2292号は、ハニカムの真ん中から入力ルームまでの最短距離の問題です.最短距離を求める問題としては難しいと思われますが、実は一つのルールで構成されています.
1が中心なら、
2~7->部屋2個、男6個
8~19->3部屋、12部屋
20~37->部屋4個、部屋18個
ロ、部屋の増加数は等差数列になっています.
繰り返しドアを回すと、1変数に6を加えると、部屋に数を増やす等差数列を形成することができます.これにより、部屋範囲を変更しながら、その間に入力された変数nがあれば、出力する変数を出力することができる.
コードに変換:
#include <stdio.h>
#include <stdlib.h>

int main(void){
	int num;
	scanf("%d", &num);
	int a = 0; int start = 2; int i;
	if (num == 1) {
		printf("1\n");
		return 0;
	}
	i = 2;
	for (;;) {
		a += 6;
		if (start <= num && start + a - 1 >= num) {
			break;
		}
		else {
			i++;
			start += a;
		}
	}
	printf("%d\n", i);
	return 0;
}