C/C++

Помогите с двумя задачами на с++.

Почему мой код не работает?
Вот код по первой задаче:
 #include     

using namespace std;



int main() {

long long n;

cin >> n;

n *= 2;

vector dp(n + 1, vector(n / 2 + 1));

dp[0][0] = 1;

for (long long i = 1; i
BE
Bakytbek Esenov
455
 #include 
#include

using namespace std;

int main() {
int n;
cin >> n;
vector cur(n + 1, 0);
cur[0] = 1;
for (int i = 0; i < n * 2; ++i) {
vector tmp(n + 1, 0);
tmp[0] = cur[1];
tmp[n] = cur[n - 1];
for (int j = 1; j < n; ++j) {
tmp[j] = (cur[j + 1] + cur[j - 1]) % 1000000007ll;
}
cur = tmp;
}
cout > n;
vector cur(12, 1);
cur[0] = cur[1] = cur[11] = 0;
for (int i = 1; i < n; ++i) {
vector tmp(12);
for (int j = 1; j
Мага Акимжанов
Мага Акимжанов
98 301
Лучший ответ
Ваш код не учитывает остаток от деления на 10⁹+7 во время вычислений. Вы должны добавить эту строку внутри цикла:
 dp[i][j] %= (long long)(1e9 + 7); 
Также, вы можете улучшить свой код, используя const long long MOD = 1e9 + 7; и заменяя все (long long)(1e9 + 7) на MOD. Вот исправленная версия вашего кода:
 #include      
using namespace std;
const long long MOD = 1e9 + 7;
int main() {
long long n;
cin >> n;
n *= 2;
vector dp(n + 1, vector(n / 2 + 1));
dp[0][0] = 1;
for (long long i = 1; i
Bakytbek Esenov Ты такой рандомный, то ты правильные ответы даёшь, то нет, но спасибо тебе большое