제출 #481423

#제출 시각아이디문제언어결과실행 시간메모리
481423rainboyZapina (COCI20_zapina)C11
110 / 110
87 ms288 KiB
#include <stdio.h>

#define N	350
#define MD	1000000007

int main() {
	static int vv[N + 1], ff[N + 1], gg[N + 1], dp[N + 1][2];
	int n, i, j, k;

	scanf("%d", &n);
	ff[0] = gg[0] = 1;
	for (i = 1; i <= n; i++) {
		vv[i] = i == 1 ? 1 : (long long) vv[i - MD % i] * (MD / i + 1) % MD;
		ff[i] = (long long) ff[i - 1] * i % MD;
		gg[i] = (long long) gg[i - 1] * vv[i] % MD;
	}
	dp[0][0] = 1;
	for (i = 1; i <= n; i++)
		for (j = n; j >= 0; j--)
			for (k = 1; j + k <= n; k++)
				if (k == i)
					dp[j + k][1] = (dp[j + k][1] + (long long) (dp[j][0] + dp[j][1]) * gg[k] % MD) % MD;
				else {
					dp[j + k][0] = (dp[j + k][0] + (long long) dp[j][0] * gg[k]) % MD;
					dp[j + k][1] = (dp[j + k][1] + (long long) dp[j][1] * gg[k]) % MD;
				}
	printf("%lld\n", (long long) dp[n][1] * ff[n] % MD);
	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

zapina.c: In function 'main':
zapina.c:10:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |  scanf("%d", &n);
      |  ^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...