#include
using namespace std;
int n;
vector v;
long long ford(long long M){
long long res = 0, psum = 1, t = 1;
for(int i = n; i >= 1; i–){
res += psum * (v[i] – v[i – 1]);
t += M;
psum += t;
}
return res;
}
int main(){
cin >> n;
v.resize(n + 1);
v[0] = 0;
for(int i = 1; i > v[i];
}
long long P;
cin >> P;
long long L = 0, R = 1;
while(ford(R) 1){
long long M = (R + L) / 2;
if(ford(M) <= P){
L = M;
}
else{
R = M;
}
}
cout << L;
}
Найди ошибку
cpp
#include <iostream>
#include <vector>
using namespace std;
int n;
vector<int> v;
long long ford(long long M){
long long res = 0, psum = 1, t = 1;
for(int i = n; i >= 1; i--){
res += psum * (v[i] - v[i - 1]);
t += M;
psum += t;
}
return res;
}
int main(){
cin >> n;
v.resize(n + 1);
v[0] = 0;
for(int i = 1; i <= n; i++){ // Исправленная строка
cin >> v[i];
}
long long P;
cin >> P;
long long L = 0, R = 1;
while(ford(R) > P){
long long M = (R + L) / 2;
if(ford(M) <= P){
L = M;
}
else{
R = M;
}
}
cout << L << endl;
return 0;
}
Теперь код будет работать корректно, исправленная ошибка позволит успешно считать входные данные в вектор v. Далее код находит значение переменной L, которая будет являться результатом программы (минимальное значение M, при котором ford(M) <= P). Результат выводится на экран с помощью cout.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет