Задание: Нарисовать блок схему и написать программу вычисления цикла с параметром.
Определите расчетную массу состава на подъеме с уклоном i (отношение высоты подъема к длине участка, умноженное на 1000) и радиусом кривой R для тепловоза ТЭЗ. Состав сформирован из четырехосных груженых вагонов массой q; масса тепловоза P =252 т.
Математическая формулировка задачи.
Удельное сопротивление четырехосных вагонов массой g определяется по формуле
W1=7,7+(8,0+0,1V+0,0025V2)/g/4
Удельное дополнительное сопротивление в зависимости от уклона и радиуса кривой
i0=i +700/R
масса состава рассчитывается следующим образом:
Q=(F-P(W0+i0))/(W1+i0)
Алгоритм решения задачи.
1. Ввод исходных данных R,i,g и F и W0.
2. Вычисление i0.
3. Организация цикла по V от 1 до 60 с шагом 1.
4. Вычисление W1, Q.
5. Вывод результатов Q.
6. Конец цикла.
#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int N,k;
int a[1000000];
map <pair <int, int>, int> mem;
cin >> N;
//b.reserve(N);
memset(a,0,sizeof a);
//memset(b,0,b.size()*sizeof int);
for (int i=0;i<N;i++)
cin >> a[i];
cin >> k;
for (int i=0;i<k;i++){
int tmp,tmp2,tmp3,tmp4,sum{0};
cin >> tmp >> tmp2;
tmp--;tmp2--;
if (mem.find({tmp,tmp2})!=mem.end()) {cout<< mem[ {tmp,tmp2} ] << endl; continue;}
tmp3=tmp;
tmp4=tmp2;
for(int x=0;x<(tmp4-tmp3)/2+1;x++){
for(int z=0;z<(tmp2-tmp)/2+1;z++){
if (mem.find({tmp,tmp2})!=mem.end()) {sum= (sum+mem[ {tmp,tmp2} ])%998244353; break;}
for(int j=tmp+z;j<=tmp2-z;j++){
sum=(sum+a[j])%998244353;
}}
tmp++;tmp2--;
}
cout << sum << endl;
mem[{tmp3,tmp4}]=sum;
}
return 0;
}
Объяснение: