Submission #3602193


Source Code Expand

#include <limits.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

// 内部変数
static FILE *szpFpI;											// 入力

// 内部変数 - テスト用
#ifdef D_TEST
	static int siRes;
	static FILE *szpFpA;
#endif

// 出力
int
fOut(
	int piValS					// <I> 開始
	, int piValE				// <I> 終了
)
{
	int i;
	char lc1Buf[1024], lc1Out[1024];

	for (i = piValS; i <= piValE; i++) {
		sprintf(lc1Out, "%d\n", i);
#ifdef D_TEST
		fgets(lc1Buf, sizeof(lc1Buf), szpFpA);
		if (strcmp(lc1Buf, lc1Out)) {
			siRes = -1;
		}
#else
		printf("%s", lc1Out);
#endif
	}

	return 0;
}

// 実行メイン
int
fMain(
	int piTNo					// <I> テスト番号 1~
)
{
	char lc1Buf[1024];

	// 入力 - セット
#ifdef D_TEST
	sprintf(lc1Buf, ".\\Test\\T%d.txt", piTNo);
	szpFpI = fopen(lc1Buf, "r");
	sprintf(lc1Buf, ".\\Test\\A%d.txt", piTNo);
	szpFpA = fopen(lc1Buf, "r");
	siRes = 0;
#else
	szpFpI = stdin;
#endif

	// 合計 - 取得
	int liSum;
	fgets(lc1Buf, sizeof(lc1Buf), szpFpI);
	sscanf(lc1Buf, "%d", &liSum);

	// 最大値
	// N(1+N)/2=S -> N=sqrt(2S-0.5*0.5)-0.5
	int liMax = (int)(sqrt(2.0 * (double)liSum - 0.5 * 0.5) - 0.5);

	while (1) {

		// 合計
		int liSum2 = liMax * (liMax + 1) / 2;

		// 差
		int liDF = liSum2 - liSum;
		if (liDF == 0) {				// なし
			fOut(1, liMax);
			break;
		}
		else if (liDF < 0) {			// 未達
			liMax++;
		}
		else {							// 達成
			fOut(1, liDF - 1);
			fOut(liDF + 1, liMax);
			break;
		}
	}

	// 残データ有無
#ifdef D_TEST
	lc1Buf[0] = '\0';
	fgets(lc1Buf, sizeof(lc1Buf), szpFpA);
	if (strcmp(lc1Buf, "")) {
		siRes = -1;
	}
#endif

	// テストファイルクローズ
#ifdef D_TEST
	fclose(szpFpI);
	fclose(szpFpA);
#endif

	// テスト結果
#ifdef D_TEST
	if (siRes == 0) {
		printf("OK %d\n", piTNo);
	}
	else {
		printf("NG %d\n", piTNo);
	}
#endif

	return 0;
}

int
main()
{

#ifdef D_TEST
	int i;
	for (i = D_TEST_SNO; i <= D_TEST_ENO; i++) {
		fMain(i);
	}
#else
	fMain(0);
#endif

	return 0;
}

Submission Info

Submission Time
Task B - Exactly N points
User asugen0402
Language C (GCC 5.4.1)
Score 300
Code Size 2147 Byte
Status AC
Exec Time 5 ms
Memory 256 KB

Compile Error

./Main.c: In function ‘fMain’:
./Main.c:63:2: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result [-Wunused-result]
  fgets(lc1Buf, sizeof(lc1Buf), szpFpI);
  ^

Judge Result

Set Name sample dataset1 dataset2
Score / Max Score 0 / 0 200 / 200 100 / 100
Status
AC × 3
AC × 13
AC × 24
Set Name Test Cases
sample sample-01.txt, sample-02.txt, sample-03.txt
dataset1 sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt
dataset2 sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, sample-01.txt, sample-02.txt, sample-03.txt
Case Name Status Exec Time Memory
01-01.txt AC 5 ms 256 KB
01-02.txt AC 1 ms 128 KB
01-03.txt AC 1 ms 128 KB
01-04.txt AC 1 ms 128 KB
01-05.txt AC 1 ms 128 KB
01-06.txt AC 1 ms 128 KB
01-07.txt AC 1 ms 128 KB
01-08.txt AC 1 ms 128 KB
01-09.txt AC 1 ms 128 KB
01-10.txt AC 1 ms 128 KB
02-01.txt AC 1 ms 128 KB
02-02.txt AC 1 ms 128 KB
02-03.txt AC 1 ms 128 KB
02-04.txt AC 1 ms 128 KB
02-05.txt AC 1 ms 128 KB
02-06.txt AC 1 ms 128 KB
02-07.txt AC 1 ms 128 KB
02-08.txt AC 1 ms 128 KB
sample-01.txt AC 1 ms 128 KB
sample-02.txt AC 1 ms 128 KB
sample-03.txt AC 1 ms 128 KB