227482026-01-15 17:44:21algoproJárdakövezés háromféle elemmelcpp17Elfogadva 30/303ms564 KiB
// UUID: 2c4ad3a1-d6eb-4d81-9b94-1479a40e2b67
#include <bits/stdc++.h>
using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	/*
	int n; cin >> n;
	vector<int> a(n + 1), b(n + 1);
	int mod = 2023;
	a[0] = 1; b[0] = 1; a[1] = 2; b[1] = 1;
	for (int i = 2; i <= n; i ++) {
		b[i] = b[i - 1] + a[i - 1] + a[i - 2];
		a[i] = b[i] + 3 * b[i - 1] + a[i - 1] + 2 * a[i - 2];
		b[i] %= mod; a[i] %= mod;
	}
	cout << a[n];
*/
	int n; cin >> n;
	vector<int> dp(n + 1);
	dp[0] = 1; dp[1] = 2; dp[2] = 11;
	int pref1 = 2, pref2 = 12, mod = 2023;
	for (int i = 3; i <= n; i ++) {
		dp[i] += 2 * dp[i - 1] + 7 * dp[i - 2];
		if (i % 2 == 0) {
			dp[i] += 8 * (pref1 - dp[i - 1]);
			dp[i] += 8 * (pref2 - dp[i - 2]);
			dp[i] %= mod;
			pref2 += dp[i];
			pref2 %= mod;
		}
		else {
			dp[i] += 8 * (pref2 - dp[i - 1]);
			dp[i] += 8 * (pref1 - dp[i - 2]);
			dp[i] %= mod;
			pref1 += dp[i];
			pref1 %= mod;
		}
	}
	cout << (dp[n] + mod) % mod;
	return 0;
}
/*
    int n; cin >> n;
	vector<int> dp(n + 1);
	dp[0] = 1; dp[1] = 2; dp[2] = 11;
	int pref1 = 2, pref2 = 12, mod = 2023;
	for (int i = 3; i <= n; i ++) {
		dp[i] += 2 * dp[i - 1] + 7 * dp[i - 2];
		if (i % 2 == 0) {
			dp[i] += 8 * (pref1 - dp[i - 1]);
			dp[i] += 8 * (pref2 - dp[i - 2]);
			dp[i] %= mod;
			pref2 += dp[i];
			pref2 %= mod;
		}
		else {
			dp[i] += 8 * (pref2 - dp[i - 1]);
			dp[i] += 8 * (pref1 - dp[i - 2]);
			dp[i] %= mod;
			pref1 += dp[i];
			pref1 %= mod;
		}
	}
	cout << dp[n];
	*/
RészfeladatÖsszpontTesztVerdiktIdőMemória
base30/30
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms508 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms388 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/21ms548 KiB
11Elfogadva2/22ms564 KiB
12Elfogadva3/32ms564 KiB
13Elfogadva3/31ms316 KiB
14Elfogadva3/31ms316 KiB
15Elfogadva3/33ms564 KiB