Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33712 沈仲恩 【S】T1 C++ 通过 100 21 MS 16860 KB 1240 2024-10-20 14:45:44

Tests(10/10):


#include <bits/stdc++.h> #define int long long using namespace std; char s[1000005]; const int mod = 998244353; int f[2][1000005]; signed main() { // freopen("pair.in", "r", stdin); // freopen("pair.out", "w", stdout); scanf("%s", s + 1); int n = strlen(s + 1); f[0][1] = 2, f[1][1] = 1; for (int i = 2; i <= n; i++) { if (s[i] - '0') { f[0][i] = f[0][i - 1]; f[1][i] = f[0][i - 1] * 2 % mod + f[1][i - 1] * 3 % mod; f[1][i] %= mod; } else { f[0][i] = f[0][i - 1] * 2 % mod; f[1][i] = f[1][i - 1] * 3 % mod; } } printf("%lld", (f[0][n] + f[1][n]) % mod); return 0; } /* (同位个数 / 2) * (位数-1) 1~N 0的数量+1 的总和。 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 1 1 1 2 1 1 3 3 1 00001111 00110011 01010101 10000 3 2 2 1 2 1 1 0 3 5 7 8 10 11 12 12 0 1 0 1 0 0 000 001 000 010 000 010 001 011 000 000 000 001 000 010 001 010 000 011 100 100 100 100 101 101 110 110 111 1000 000 001 010 011 000 010 000 001 000 0000 1 2 1 4 1 3 7 9 17 21 25 27 1010 010 10 01 00 */


测评信息: