Submission #3466948


Source Code Expand

#include <bits/stdc++.h>

#define For(i, l, r) for(register int i = (l), i##end = (int)(r); i <= i##end; ++i)
#define Fordown(i, r, l) for(register int i = (r), i##end = (int)(l); i >= i##end; --i)
#define Set(a, v) memset(a, v, sizeof(a))
#define Cpy(a, b) memcpy(a, b, sizeof(a))
#define debug(x) cout << #x << ": " << (x) << endl
#define DEBUG(...) fprintf(stderr, __VA_ARGS__)

using namespace std;

template<typename T> inline bool chkmin(T &a, T b) { return b < a ? a = b, 1 : 0; }
template<typename T> inline bool chkmax(T &a, T b) { return b > a ? a = b, 1 : 0; }

inline int read() {
	int x(0), sgn(1); char ch(getchar());
	for (; !isdigit(ch); ch = getchar()) if (ch == '-') sgn = -1;
	for (; isdigit(ch); ch = getchar()) x = (x * 10) + (ch ^ 48);
	return x * sgn;
}

void File() {
	freopen ("F.in", "r", stdin);
	freopen ("F.out", "w", stdout);
}

const int N = 5010, Mod = 1e9 + 7;

int n; char str[N];

inline int fpm(int x, int power) {
	int res = 1;
	for (; power; power >>= 1, x = 1ll * x * x % Mod)
		if (power & 1) res = 1ll * res * x % Mod;
	return res;
}

int fac[N], ifac[N], Pow2[N];
void Math_Init(int maxn) {
	fac[0] = ifac[0] = Pow2[0] = 1;
	For (i, 1, maxn)
		fac[i] = 1ll * fac[i - 1] * i % Mod,
		Pow2[i] = 2ll * Pow2[i - 1] % Mod;
	ifac[maxn] = fpm(fac[maxn], Mod - 2);
	Fordown (i, maxn - 1, 1)
		ifac[i] = 1ll * ifac[i + 1] * (i + 1) % Mod;
}

inline int Comb(int n, int m) {
	if (n < 0 || m < 0 || n < m) return 0;
	return 1ll * fac[n] * ifac[m] % Mod * ifac[n - m] % Mod;
}

inline int Calc(int len) {
	int res = 0;
	For (i, 0, n)
		if (i - (n - i) <= len)
			res = (res + 1ll * (Comb(n, i) - Comb(n, i - (len + 1))) * Pow2[i]) % Mod;
	return (res + Mod) % Mod;
}

int main () {

	n = read();
	scanf ("%s", str + 1);

	Math_Init(n);

	int len = strlen(str + 1);

	printf ("%lld\n", 1ll * (Calc(len) - Calc(len - 1) + Mod) * fpm(fpm(2, len), Mod - 2) % Mod);

	return 0;

}

Submission Info

Submission Time
Task F - Unhappy Hacking
User zjp_shadow
Language C++14 (GCC 5.4.1)
Score 800
Code Size 1981 Byte
Status AC
Exec Time 1 ms
Memory 256 KB

Compile Error

./Main.cpp: In function ‘void File()’:
./Main.cpp:23:30: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
  freopen ("F.in", "r", stdin);
                              ^
./Main.cpp:24:32: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
  freopen ("F.out", "w", stdout);
                                ^
./Main.cpp: In function ‘int main()’:
./Main.cpp:65:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf ("%s", str + 1);
                       ^

Judge Result

Set Name Sample Sub1 Sub2
Score / Max Score 0 / 0 400 / 400 400 / 400
Status
AC × 3
AC × 23
AC × 44
Set Name Test Cases
Sample 0_01, 0_02, 0_03
Sub1 0_01, 0_02, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15, 1_16, 1_17, 1_18, 1_19, 1_20, 1_21, 1_22, 1_23, 1_24
Sub2 0_01, 0_02, 0_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15, 1_16, 1_17, 1_18, 1_19, 1_20, 1_21, 1_22, 1_23, 1_24, 2_25, 2_26, 2_27, 2_28, 2_29, 2_30, 2_31, 2_32, 2_33, 2_34, 2_35, 2_36, 2_37, 2_38, 2_39, 2_40, 2_41, 2_42, 2_43, 2_44
Case Name Status Exec Time Memory
0_01 AC 1 ms 256 KB
0_02 AC 1 ms 256 KB
0_03 AC 1 ms 256 KB
1_04 AC 1 ms 256 KB
1_05 AC 1 ms 256 KB
1_06 AC 1 ms 256 KB
1_07 AC 1 ms 256 KB
1_08 AC 1 ms 256 KB
1_09 AC 1 ms 256 KB
1_10 AC 1 ms 256 KB
1_11 AC 1 ms 256 KB
1_12 AC 1 ms 256 KB
1_13 AC 1 ms 256 KB
1_14 AC 1 ms 256 KB
1_15 AC 1 ms 256 KB
1_16 AC 1 ms 256 KB
1_17 AC 1 ms 256 KB
1_18 AC 1 ms 256 KB
1_19 AC 1 ms 256 KB
1_20 AC 1 ms 256 KB
1_21 AC 1 ms 256 KB
1_22 AC 1 ms 256 KB
1_23 AC 1 ms 256 KB
1_24 AC 1 ms 256 KB
2_25 AC 1 ms 256 KB
2_26 AC 1 ms 256 KB
2_27 AC 1 ms 256 KB
2_28 AC 1 ms 256 KB
2_29 AC 1 ms 256 KB
2_30 AC 1 ms 256 KB
2_31 AC 1 ms 256 KB
2_32 AC 1 ms 256 KB
2_33 AC 1 ms 256 KB
2_34 AC 1 ms 256 KB
2_35 AC 1 ms 256 KB
2_36 AC 1 ms 256 KB
2_37 AC 1 ms 256 KB
2_38 AC 1 ms 256 KB
2_39 AC 1 ms 256 KB
2_40 AC 1 ms 256 KB
2_41 AC 1 ms 256 KB
2_42 AC 1 ms 256 KB
2_43 AC 1 ms 256 KB
2_44 AC 1 ms 256 KB