Submission #65499601
Source Code Expand
Copy
#include <stdio.h>#include <string.h>#define MOD_BY 998244353#define INV_4 748683265int 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;}
#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 |
|
|
|
|
| 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 |