Тема: Ошибки в описании SQRT - декомпозиции.
Вот рабочий вариант программы.
Смотреть комментарии
#include <vector>
#include <iostream>
#include <cmath>
using namespace std;
const int n = 10;
int main(){
int a_init[n] = {2,4,3,1,6,7,8,9,1,7};
vector<int> a (a_init, a_init+n);
//предпосчёт
int count = (int)sqrt(n + 0.0) + 1; //количество блоков
int len = count - 1; //размер блока. // Количество блоков и их размер не равны, как сказано у вас.
vector<int> b (count);
for(int i = 0; i < n; ++i){
b[i / len] += a[i];
}
for(;;){
int l, r;
cout<<"\nEnter l and r:";
cin>>l;
cin>>r;
int sum = 0;
for(int i=l; i<=r;){
if(i % len == 0 && i + len - 1 <= r){
sum += b[i / len];
i += len; // Опечатка была здесь.
}
else{
sum += a[i];
++i;
}
}
}
return 0;
}
Спасибо за внимание.