A321. Циклы

Задача

Даны натуральные числа [latex]m, n[/latex], действительные числа [latex] a_1, a_2, …, a_{mn}[/latex]. Вычислить [latex]a_1 a_2 … a_m + a_{m+1} a_{m+2} … a_{2m} + a_{(n – 1) m + 1} a_{(n – 1) m + 2} … a_{nm}[/latex].

Входные данные:
[latex]m, n[/latex] — натуральные числа.
В следующей строке содержится [latex]m \cdot n[/latex] действительных чисел.

Выходные данные
Действительное число, значение требуемого выражения.

Тесты:

Входные данные Выходные данные
1
3 3
1.1342 2.82113 3.5431 4.541 5.081 6.761 7.35781 8.456451 9.6461 10.9321
767.5218903911781
2
5 4
23.2312 -13.016 0.78 1.0 73.48992
-3441.32150 39.94 87.04 0.1 -0.02
94.094 23.0001 0.005 -2.0 -1.0
0.004 -1.01 42.0 0.454 1.5
6593.637250058031
3
3 2
1.1 2.2 3.3 4.4 5.5 6.6
327.426

Код на языке C++:

Код на языке Java:

Решение задачи:
Заведём массив для хранения чисел. Пользуясь циклом [latex]for[/latex] от [latex]1[/latex] до [latex]m \cdot n[/latex], по мере заполнения массива будем считать слагаемые нашего выражения. Для этого воспользуемся оператором [latex] if [/latex], проверяя индексы элементов массива.

Код программы на C++: Ideone
Код программы на Java: Ideone
Условия задачи(стр.134): 321

A303. Вычисления с хранением последовательности значений

Условие задачи

Даны действительные числа [latex]x_1,\;…,\;x_{200}[/latex], принадлежащие интервалу [latex](0, 1][/latex]. Полуинтервал разбивается на 100 равных частей. Вычислить [latex]p_1, …, p_{100}[/latex], где [latex]p_k = \frac{m_k}{2000}[/latex], а [latex]m_k[/latex] — количество заданных чисел, принадлежащих полуинтервалу [latex](0.01(k – 1), 0.01k] \ \ (k = 1, …, 100)[/latex].

Входные данные
Входной файл содержит 200 действительных чисел, принадлежащих интервалу [latex](0, 1][/latex].

Выходные данные
В выходной файл выведите 100 чисел [latex]p_k \ (k = 1, …, 100)[/latex].

Тесты

Входные данные Выходные данные
1
Последовательность [latex]\frac{1}{i}, \ i=1, …, 200[/latex] p[1]=0.067 p[2]=0.013 p[3]=0.006 p[4]=0.003 p[5]=0.002 p[6]=0.0015 p[7]=0.001 p[8]=0.001 p[9]=0.0005 p[10]=0.0005
p[11]=0.0005 p[12]=0 p[13]=0.0005 p[14]=0.0005 p[15]=0 p[16]=0 p[17]=0.0005 p[18]=0 p[19]=0 p[20]=0.0005
p[21]=0 p[22]=0 p[23]=0 p[24]=0 p[25]=0.0005 p[26]=0 p[27]=0 p[28]=0 p[29]=0 p[30]=0
p[31]=0 p[32]=0 p[33]=0.0005 p[34]=0 p[35]=0 p[36]=0 p[37]=0 p[38]=0 p[39]=0 p[40]=0
p[41]=0 p[42]=0 p[43]=0 p[44]=0 p[45]=0 p[46]=0 p[47]=0 p[48]=0 p[49]=0 p[50]=0.0005
p[51]=0 p[52]=0 p[53]=0 p[54]=0 p[55]=0 p[56]=0 p[57]=0 p[58]=0 p[59]=0 p[60]=0
p[61]=0 p[62]=0 p[63]=0 p[64]=0 p[65]=0 p[66]=0 p[67]=0 p[68]=0 p[69]=0 p[70]=0
p[71]=0 p[72]=0 p[73]=0 p[74]=0 p[75]=0 p[76]=0 p[77]=0 p[78]=0 p[79]=0 p[80]=0
p[81]=0 p[82]=0 p[83]=0 p[84]=0 p[85]=0 p[86]=0 p[87]=0 p[88]=0 p[89]=0 p[90]=0
p[91]=0 p[92]=0 p[93]=0 p[94]=0 p[95]=0 p[96]=0 p[97]=0 p[98]=0 p[99]=0 p[100]=0.0005

Код на языке C++:

Код на языке Java:

Решение задачи
Для сортировки чисел по полуинтервалам разделим каждое [latex]x_i[/latex] на [latex]0.01[/latex](т.е. умножим на 100) и округлим вправо. Заведём массив для подсчета количества чисел, принадлежащих полуинтервалам [latex](0.01(k – 1), 0.01k] \ \ (k = 1, …, 100)[/latex]. Выведем [latex]p_k \ (k = 1, …, 100)[/latex].

Условие задачи (стр. 127)
Код задачи на C++: Ideone
Код задачи на Java: Ideone

e-olymp 519. Сумма квадратов

Иван Василевский
Иван Василевский

Latest posts by Иван Василевский (see all)

Как лучше кодировать квадрат?

Как лучше кодировать квадрат?

Условие задачи
Найти сумму квадратов двух чисел.

Входные данные
Два целых числа [latex]a[/latex] и [latex]b[/latex]. Числа не превышают [latex]10^9[/latex] по абсолютной величине.

Выходные данные
Выведите одно целое число [latex]a^2 + b^2.[/latex] Continue reading

MS2. Сумма чисел во входном потоке

Условие

Сосчитайте сумму чисел во входном потоке.

Тесты

Ввод
Вывод
1 2 3 4 5 6 21
12 13 14 39
1-100

5050

Решение

Делаем цикл который будет работать, пока не закончиться входной поток, и считаем нашу сумму, затем печатаем ее.

Код на ideone C++
Код на ideone Java

MS1. Количество чисел в потоке

Антон Куперман
Антон Куперман

Latest posts by Антон Куперман (see all)

Задание

Сосчитайте количество чисел во входном потоке.

Тесты

Вход Выход
20 16 11 3
17 22.4 41.9 74.5 4
122 347 1567 21 40 5
13 28 17 8 2 5
abc 123 5.5 21 go 4 4

Код на C++

Код на Java

 

Решение

Задаем цикл, который будет выполняться, пока не закончится входной поток. В нем находим количество всех чисел в потоке. Выводим полученное число.

Ссылки

1.Код на C++

2.Код на Java

e-olymp 141. Минимальная сумма цифр

Условие задачи:

Сколько натуральных чисел из промежутка [latex][M,N][/latex] имеют наименьшую сумму цифр ?

Задачу также можно найти здесь.

Входные данные:

Во входном файле два числа [latex]M[/latex] и [latex]N[/latex] ( [latex]1\le M\le N\le 1000000[/latex] ) .

Выходные данные:

В выходной файл нужно записать ответ — одно число.

Тесты

M N Вывод
1 1 100 3
2 2 17 1
3 32 1024 2
4 1 1000000 7
5 10 10 1

Код программы

Алгоритм решения

Для решения данной задачи зададим функцию, которая возвращает сумму чисел вводимого нами числа. После ввода границ необходимого промежутка присваиваем минимальную сумму (sumMin) сумме цифр первого числа [latex] M [/latex]. Теперь задаём цикл со счётчиком [latex] i [/latex] от [latex] M + 1 [/latex] до [latex]\le N[/latex]. В случае, когда сумма чисел счётчика меньше сумме цифр числа [latex] M [/latex], присваиваем ей (сумме цифр счётчика i) минимальную сумму цифр и выводим единицу. В противном случае увеличиваем счётчик на единицу и выводим полученный результат. Выводимое число и будет количеством натуральных чисел на промежутке, имеющих наименьшую сумму цифр.

Код программы можно найти здесь.

Ссылка на полностью засчитанное решение на сайте e-olymp.