Submission #65499601


Source Code Expand

Copy
#include <stdio.h>
#include <string.h>
#define MOD_BY 998244353
#define INV_4 748683265
int add(int a, int b) {
return a + b - MOD_BY * (a + b >= MOD_BY);
}
int mul(int a, int b) {
return (int)((long long)a * b % MOD_BY);
}
int pou(int a, int b) {
int r = 1;
while (b > 0) {
if (b & 1) r = mul(r, a);
a = mul(a, a);
b >>= 1;
}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>
#include <string.h>

#define MOD_BY 998244353
#define INV_4 748683265

int add(int a, int b) {
	return a + b - MOD_BY * (a + b >= MOD_BY);
}

int mul(int a, int b) {
	return (int)((long long)a * b % MOD_BY);
}

int pou(int a, int b) {
	int r = 1;
	while (b > 0) {
		if (b & 1) r = mul(r, a);
		a = mul(a, a);
		b >>= 1;
	}
	return r;
}

char N[114514];

int main(void) {
	int i;
	int mult, mult_delta;
	int ans, ans_delta;
	int len;
	if (scanf("%114513s", N) != 1) return 1;
	len = (int)strlen(N);

	if (len == 1 && N[0] == '1') {
		/* N == 1 */
		puts("1");
		return 0;
	}

	/* 1 << (N - 2) を求める */
	mult = 1;
	mult_delta = 2;
	for (i = len - 1; i >= 0; i--) {
		mult = mul(mult, pou(mult_delta, N[i] - '0'));
		mult_delta = pou(mult_delta, 10);
	}
	mult = mul(mult, INV_4);

	/* (1 << (N - 2)) * N を求める */
	ans = 0;
	ans_delta = mult;
	for (i = len - 1; i >= 0; i--) {
		ans = add(ans, mul(ans_delta, N[i] - '0'));
		ans_delta = mul(ans_delta, 10);
	}

	printf("%d\n", add(ans, mult));
	return 0;
}

/*

消灯しているところを点灯させても有利にならない……多分
よって、実質連続して点灯しているグループが何組あるか

int func(int left, int on) {
	int ans = 0;
	if (left <= 0) return 0;
	// 消灯
	ans += func(left - 1, 0);
	// 点灯
	ans += func(left - 1, 1);
	// 点灯:ここで新たにボタンを押す
	if (!on) ans += 1 << (left - 1);
	return ans;
}

[left][0] = [left-1][0] + [left-1][1]
[left][1] = [left-1][0] + [left-1][1] + (1 << (left - 1))

そこ始まりのボタンを押すパターン数
→ そこが点灯、1個左が消灯、それ以外は任意
→ 1 << (N - 2)

ただし、一番左については 1 << (N - 1)
これは (1 << (N - 2)) * 2 と表せる

よって、答えは (1 << (N - 2)) * N + (1 << (N - 2))

*/

Submission Info

Submission Time
Task H - Buttons
User mikecat
Language C (gcc 12.2.0)
Score 400
Code Size 1924 Byte
Status AC
Exec Time 3 ms
Memory 1820 KB

Judge Result

Set Name Sample Subtask1 Subtask2 Subtask3
Score / Max Score 0 / 0 50 / 50 200 / 200 150 / 150
Status
AC × 3
AC × 14
AC × 35
AC × 63
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
Subtask1 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_subtask_1_00.txt, 01_subtask_1_01.txt, 01_subtask_1_02.txt, 01_subtask_1_03.txt, 01_subtask_1_04.txt, 01_subtask_1_05.txt, 01_subtask_1_06.txt, 01_subtask_1_07.txt, 01_subtask_1_08.txt, 01_subtask_1_09.txt, 01_subtask_1_10.txt
Subtask2 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_subtask_1_00.txt, 01_subtask_1_01.txt, 01_subtask_1_02.txt, 01_subtask_1_03.txt, 01_subtask_1_04.txt, 01_subtask_1_05.txt, 01_subtask_1_06.txt, 01_subtask_1_07.txt, 01_subtask_1_08.txt, 01_subtask_1_09.txt, 01_subtask_1_10.txt, 02_subtask_2_00.txt, 02_subtask_2_01.txt, 02_subtask_2_02.txt, 02_subtask_2_03.txt, 02_subtask_2_04.txt, 02_subtask_2_05.txt, 02_subtask_2_06.txt, 02_subtask_2_07.txt, 02_subtask_2_08.txt, 02_subtask_2_09.txt, 02_subtask_2_10.txt, 02_subtask_2_11.txt, 02_subtask_2_12.txt, 02_subtask_2_13.txt, 02_subtask_2_14.txt, 02_subtask_2_15.txt, 02_subtask_2_16.txt, 02_subtask_2_17.txt, 02_subtask_2_18.txt, 02_subtask_2_19.txt, 02_subtask_2_20.txt
Subtask3 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_subtask_1_00.txt, 01_subtask_1_01.txt, 01_subtask_1_02.txt, 01_subtask_1_03.txt, 01_subtask_1_04.txt, 01_subtask_1_05.txt, 01_subtask_1_06.txt, 01_subtask_1_07.txt, 01_subtask_1_08.txt, 01_subtask_1_09.txt, 01_subtask_1_10.txt, 02_subtask_2_00.txt, 02_subtask_2_01.txt, 02_subtask_2_02.txt, 02_subtask_2_03.txt, 02_subtask_2_04.txt, 02_subtask_2_05.txt, 02_subtask_2_06.txt, 02_subtask_2_07.txt, 02_subtask_2_08.txt, 02_subtask_2_09.txt, 02_subtask_2_10.txt, 02_subtask_2_11.txt, 02_subtask_2_12.txt, 02_subtask_2_13.txt, 02_subtask_2_14.txt, 02_subtask_2_15.txt, 02_subtask_2_16.txt, 02_subtask_2_17.txt, 02_subtask_2_18.txt, 02_subtask_2_19.txt, 02_subtask_2_20.txt, 03_subtask_3_00.txt, 03_subtask_3_01.txt, 03_subtask_3_02.txt, 03_subtask_3_03.txt, 03_subtask_3_04.txt, 03_subtask_3_05.txt, 03_subtask_3_06.txt, 03_subtask_3_07.txt, 03_subtask_3_08.txt, 03_subtask_3_09.txt, 03_subtask_3_10.txt, 03_subtask_3_11.txt, 03_subtask_3_12.txt, 03_subtask_3_13.txt, 03_subtask_3_14.txt, 03_subtask_3_15.txt, 03_subtask_3_16.txt, 03_subtask_3_17.txt, 03_subtask_3_18.txt, 03_subtask_3_19.txt, 03_subtask_3_20.txt, 03_subtask_3_21.txt, 03_subtask_3_22.txt, 03_subtask_3_23.txt, 03_subtask_3_24.txt, 03_subtask_3_25.txt, 03_subtask_3_26.txt, 03_subtask_3_27.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 1736 KB
00_sample_01.txt AC 1 ms 1504 KB
00_sample_02.txt AC 1 ms 1568 KB
01_subtask_1_00.txt AC 0 ms 1720 KB
01_subtask_1_01.txt AC 1 ms 1560 KB
01_subtask_1_02.txt AC 0 ms 1576 KB
01_subtask_1_03.txt AC 0 ms 1624 KB
01_subtask_1_04.txt AC 0 ms 1592 KB
01_subtask_1_05.txt AC 0 ms 1652 KB
01_subtask_1_06.txt AC 1 ms 1628 KB
01_subtask_1_07.txt AC 1 ms 1656 KB
01_subtask_1_08.txt AC 0 ms 1680 KB
01_subtask_1_09.txt AC 1 ms 1648 KB
01_subtask_1_10.txt AC 0 ms 1560 KB
02_subtask_2_00.txt AC 1 ms 1560 KB
02_subtask_2_01.txt AC 0 ms 1656 KB
02_subtask_2_02.txt AC 0 ms 1736 KB
02_subtask_2_03.txt AC 1 ms 1728 KB
02_subtask_2_04.txt AC 1 ms 1652 KB
02_subtask_2_05.txt AC 1 ms 1652 KB
02_subtask_2_06.txt AC 0 ms 1624 KB
02_subtask_2_07.txt AC 1 ms 1740 KB
02_subtask_2_08.txt AC 0 ms 1596 KB
02_subtask_2_09.txt AC 1 ms 1628 KB
02_subtask_2_10.txt AC 1 ms 1632 KB
02_subtask_2_11.txt AC 1 ms 1592 KB
02_subtask_2_12.txt AC 1 ms 1740 KB
02_subtask_2_13.txt AC 1 ms 1556 KB
02_subtask_2_14.txt AC 1 ms 1644 KB
02_subtask_2_15.txt AC 1 ms 1644 KB
02_subtask_2_16.txt AC 0 ms 1596 KB
02_subtask_2_17.txt AC 1 ms 1636 KB
02_subtask_2_18.txt AC 1 ms 1712 KB
02_subtask_2_19.txt AC 0 ms 1556 KB
02_subtask_2_20.txt AC 1 ms 1576 KB
03_subtask_3_00.txt AC 3 ms 1624 KB
03_subtask_3_01.txt AC 3 ms 1724 KB
03_subtask_3_02.txt AC 2 ms 1800 KB
03_subtask_3_03.txt AC 1 ms 1588 KB
03_subtask_3_04.txt AC 3 ms 1728 KB
03_subtask_3_05.txt AC 3 ms 1632 KB
03_subtask_3_06.txt AC 2 ms 1600 KB
03_subtask_3_07.txt AC 1 ms 1600 KB
03_subtask_3_08.txt AC 2 ms 1772 KB
03_subtask_3_09.txt AC 3 ms 1820 KB
03_subtask_3_10.txt AC 3 ms 1664 KB
03_subtask_3_11.txt AC 3 ms 1644 KB
03_subtask_3_12.txt AC 2 ms 1652 KB
03_subtask_3_13.txt AC 2 ms 1788 KB
03_subtask_3_14.txt AC 3 ms 1696 KB
03_subtask_3_15.txt AC 3 ms 1816 KB
03_subtask_3_16.txt AC 1 ms 1628 KB
03_subtask_3_17.txt AC 1 ms 1620 KB
03_subtask_3_18.txt AC 1 ms 1656 KB
03_subtask_3_19.txt AC 3 ms 1660 KB
03_subtask_3_20.txt AC 3 ms 1640 KB
03_subtask_3_21.txt AC 3 ms 1632 KB
03_subtask_3_22.txt AC 2 ms 1768 KB
03_subtask_3_23.txt AC 3 ms 1728 KB
03_subtask_3_24.txt AC 3 ms 1784 KB
03_subtask_3_25.txt AC 2 ms 1788 KB
03_subtask_3_26.txt AC 2 ms 1768 KB
03_subtask_3_27.txt AC 3 ms 1652 KB


2025-05-04 (Sun)
18:34:44 +09:00