連続整数の合計が1000であるグループの数(1000は任意に設定可能)


VC 6.0回のテストに成功して、連続整数の和1000のすべての組み合わせをリストすることができます.このテーマはマイクロソフトが面接したようですね.暇で退屈で1000を作って遊ぶこともできます.自分で修正することもできます.任意の値でいいです.
#include <STDIO.H>
#define TAG_NUM 50

int main(void)
{
	int i, num_cnt = 0, j = 1;
	int sum = 0, div_base;
	int start_pos_flag, show_i;

	for (div_base = 1;
		div_base <= TAG_NUM;
		div_base++)			// TAG_NUM
	{
		i = TAG_NUM / div_base;
		j = 1;
		sum = 0;
		if (i == TAG_NUM)		//TAG_NUM , 
		{
			num_cnt++;
			printf("%d\t%d
", num_cnt, i); } else { while (j <= div_base) // div_base , div_base TAG_NUM, { if (i - div_base / 2 <= 1) // { start_pos_flag = 0; sum += j; j++; } else { start_pos_flag = 1; sum += i - div_base / 2 + j - 1; j++; } } if (sum == TAG_NUM) { sum = 0; num_cnt++; if (start_pos_flag == 0) { printf("%d\t", num_cnt); for (show_i = 1; show_i <= div_base ; show_i++) printf("%d\t", show_i); printf("
"); continue; } else { printf("%d\t", num_cnt); for (show_i = 1; show_i <= div_base ; show_i++) printf("%d\t", i - div_base / 2 + show_i - 1); printf("
"); continue; } } sum = 0; j = 1; while (j <= div_base) // div_base , div_base TAG_NUM, { if (i - div_base / 2 <= 1) // { start_pos_flag = 0; sum += j; j++; } else { start_pos_flag = 1; sum += i - div_base / 2 + j; j++; } } if (sum == TAG_NUM) { sum = 0; num_cnt++; if (start_pos_flag == 0) { printf("%d\t", num_cnt); for (show_i = 1; show_i <= div_base ; show_i++) printf("%d\t", show_i); printf("
"); continue; } else { printf("%d\t", num_cnt); for (show_i = 1; show_i <= div_base ; show_i++) printf("%d\t", i - div_base / 2 + show_i); printf("
"); continue; } } } } return 0; }