Сумма номеров страниц- это сумма арифметической прогрессии (с шагом= 1) от 1 до n (номер последней прочитанной страницы).
Такая сумма равна: n*(n+1) / 2 = Q
отсюда n*(n+1) = 2Q
Так как n -целое, то можно просто посчитать целую часть от квадратного корня из 2Q (также, я сделал проверку, правильную ли сумму ввели).
Сама программа:
алг
нач
цел Q, n
вывод "введите сумму номеров прочитанных страниц: "
ввод Q
n := int(sqrt(2*Q))
если n*(n+1) = 2*Q
то вывод "номер страницы = ", n
иначе вывод "неверная сумма номеров страниц"
все
кон
Поделитесь своими знаниями, ответьте на вопрос:
Задача 1.Умова: Квадратний многочлен заданий коефіцієнтами a, b, c, де а<>0(не дорівнює Для розв'язання цієї задачі необхідно нагадати алгоритм знаходження коренів квадратного рівняння:1) обчислити дискримінант за формулою D = b^2 - 4ac;2) якщо ми отримали від'ємне число, то коренів для розв'язку квадратного рівняння з даними коефіцієнтами a, b, c не існує;3) якщо дискримінант не від'ємний, то корені рівняння знаходяться за наступними співвідношеннями: x1, 2=(-b-+sqrt(D))/2*a.Задача 2.Умова: Від річкового вокзалу відійшли одночасно у протилежних напрямках теплохід та турист. Теплохід рухався зі швидкістю V1 км/год, а турист по стежці вздовж річки зі швидкістю V2 км/год. Якщо через N годин турист передумає і вирішить попливти річкою назад за теплоходом зі швидкістю V3 км/год, то чи встигне він підсісти на теплохід, який має за графіком зупинку через Y годин після початку руху і стоїть на цій зупинці Z годин? Зважати на те, що всі події відбувалися протягом однієї доби.
using namespace std;
int main(){int a, n, max, min;int max_i, max_k, min_i, min_k;//ввод размера массиваcin>>a;cin>>n;
//объявление массиваint** a = new int* [a]; for(int i = 0; i < n; i++) { a[i] = new int [a]; }
//ввод первого массива for(int i = 0; i < a; i++) { for(int k = 0; k < n; k++) { cin>>a[i][k]; } } //Инициализация max, min; max=a[0][0]; min=a[0][0]; //поиск максимума for(int i = 0; i < a; i++) { for(int k = 0; k < n; k++) { if(max<a[i][k]) { max=a[i][k]; max_i=i; max_k=k; } } } //поиск минимума for(int i = 0; i < a; i++) { for(int k = 0; k < n; k++) { if(min>a[i][k]) { min=a[i][k]; min_i=i; min_k=k; } } }
//Max and Min меняются местамиswap(a[max_i][max_k],a[min_i][min_k]);getch();return 0;}