Ученикам первого класса дополнительно дают стакан молока и пирожок, если вес первоклассника менее $30$ кг. В первых классах школы учится $n$ учеников. Стакан молока имеет емкость $200$ мл, а упаковки молока – $0,9$ л. Определить количество дополнительных пакетов молока и пирожков, необходимых каждый день.
Входные данные.
В первой строке задано целое число $n$ ([latex]1 \leq n \leq 100[/latex]). В следующей строке идут $n$ положительных действительных чисел – массы первоклассников.
Выходные данные.
Два целых числа — количество дополнительных пакетов молока и пирожков, необходимых каждый день.
varn:Int=Std.parseFloat(Sys.stdin().readLine());//number of kids
varm=0,p=0;// number of milk's carton and petties
varw=0;// weight of the kid
for(iin0...n)
{
w=Std.parseFloat(Sys.stdin().readLine());
if(w<30)//if the weight of the kid is less than 30
{
p++;//one more petty
m+=200;//one more glass of milk
}
}
m=Math.ceil(m/900);//count the number of cartons
output.writeString(m+" "+p);
}
}
Решение.
Заведем переменные для хранения количества дополнительных пирожков ($p$), стаканов молока ($m$), а также переменную в которой будет храниться вес текущего первоклассника ($w$). Если вес меньше 30, то увеличиваем количество дополнительных пирожков, и добавляем 200 к молоку (объем одного стакана). После того, как вес всех детей был учтен, делим значение хранящееся в переменной $m$ на 900 и округляем в большую сторону, для того, чтобы вычислить необходимое количество пакетов молока.
Ссылка на решение задачи на сайте Try Haxe!
Считываем матрицу [latex]n \times m[/latex], а затем создаем транспонированную матрицу, в которой строки исходной матрицы являются столбцами и наоборот. Выводим $A^*$.
Ссылка на решение задачи на сайте Try Haxe!
Заполнить матрицу заданного размера [latex]M(k,l)[/latex] числами 1, 2, 3, 4 так, чтобы по горизонтали, вертикали и диагонали не было одинаковых рядом стоящих чисел.
Тесты
[latex]k[/latex]
[latex]l[/latex]
Output
6
6
C++
1
2
3
4
5
6
123412
341234
123412
341234
123412
341234
5
5
C++
1
2
3
4
5
12341
34123
12341
34123
12341
Код программы
programm
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
classTest{
staticfunction main(){
//Кол-во строк
vark:Int=Std.parseInt(Sys.stdin().readLine());
//Кол-во столбцов
varl:Int=Std.parseInt(Sys.stdin().readLine());
vararray:Array<Array<Int>>=[
for(iin0...k)[
for(jin0...l)(j+2*(i%2))%4+1
]
];
// Выводим массив
for(xin0...k){
varline="";
for(yin0...l){
line+=Std.string(array[x][y]);
varaddLine=" | ";
if(array[x][y]<10){
addLine=" | ";
}
line+=addLine;
}
trace(line);
}
}
}
Алгоритм решения
Заполняем массив с помощью формулы (j + 2 * (i % 2)) % 4 + 1. При i четном 2 * (i % 2) будет обращаться в 0. То есть в нечетных строках будут числа 1, 2, 3, 4 подряд, а в четных строках будут меняться цифры 1 на 3, 2 на 4, 3 на 1, 4 на 2.
Ориентированный граф задан матрицей смежности.
Найдите количество ребер в графе.
Входные данные
Входной файл содержит число n (1 ≤ n ≤ 100) — число вершин в графе, и затем n строк по n чисел, каждое из которых равно 0 или 1 — его матрицу смежности.
Выходные данные
Выведите в выходной файл количество ребер заданного графа.
Решение
30 1 11 0 1
0 1 1
6
50 1 1 1 11 0 0 0 0
1 0 0 0 0
0 0 1 0 1
1 0 0 0 0
9
21 11 1
4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
classTest
{
staticfunctionmain()
{
// Считываем входные данные
varn:Int=Std.parseFloat(Sys.stdin().readline());
vark:Int=0;
varcount:Int=0;
for(iin1...n)
{
for(jin1...n)
{
k=Std.parseInt(Sys.stdin().readline());
if(k==1)
count++;
}
}
trace(count);
}
}
Алгоритм решения
Количество ребер ориентированного графа равно количеству единиц в его матрице смежности. Поэтому просто считываем, суммируем найденные 1-цы, и выводим ответ.
Дано действительное число [latex]a[/latex]. Вычислить [latex]f(a)[/latex], если
[latex]f(x) = \begin{cases}0, & x \le 0;\\x^2 — x, & 0 < x \le 1;\\x^2 — \sin(\pi \cdot x^2), & x > 1 \end{cases}[/latex]
Алгоритм решения
Находим промежуток, которому принадлежит [latex]a[/latex]. Если [latex]a \in (-\infty;0][/latex], то [latex]f(a) = 0[/latex], если [latex]a \in (0;1][/latex], то [latex]f(a) = a^2 — a[/latex], в остальных случаях [latex]f(a) = a^2 — \sin(\pi \cdot a ^ 2)[/latex].
График функции:
Тесты
Входные данные
Выходные данные
0
0
1
0
2
4
Реализация
C#
1
2
3
4
5
6
7
8
classTest{
staticfunction main(){
// Считываем входные данные (действительное число)
Прямоугольник будет иметь наибольший размер в случае, когда его вершины лежат на окружности. Тогда, очевидно, диаметр окружности будет диагональю данного прямоугольника. Согласно условию, длины его сторон образуют золотую пропорцию. Это означает, что [latex]\frac { a }{ b } =\phi [/latex], где [latex]a[/latex] — длина большей стороны прямоугольника, [latex]b[/latex] — длина его меньшей стороны, а [latex]\phi=\frac { 1+\sqrt { 5 } }{ 2 } [/latex]. Отсюда [latex]a=b\cdot \phi[/latex]. По теореме Пифагора, [latex]{ a }^{ 2 }+{ b }^{ 2 }={ d }^{ 2 }[/latex]. Путём подстановки из предыдущего выражения и простых алгебраических преобразований получим формулу для вычисления длины меньшей стороны: [latex]b=d\cdot \sqrt { \frac { 1 }{ { \phi }^{ 2 }+1 } } [/latex].
Сначала для удобства находим значение [latex]\phi[/latex], затем — по указанным формулам длины сторон прямоугольника.
Сторонники языков Java и C++ часто спорят о том, какой язык лучше для решения олимпиадных задач. Одни говорят, что в Java есть масса полезных библиотек для работы со строками, хорошо реализованы механизмы чтения и вывода данных, а так же радует встроенные возможности для реализации длинной арифметики. С другой стороны, С++ является классическим языком, скорость выполнения программ благодаря существующим компиляторам (например, Intel Compiler 10.0) гораздо выше, чем у Java.
Но сейчас нас интересует лишь небольшие отличия, а именно соглашения, которыми пользуются программисты при описании имен переменных в Java и C++. Известно, что для понимания значений переменных часто используют английские слова или даже целые предложения, описывающие суть переменных, содержащих те или иные значения. Приведем ниже правила описания переменных, которыми руководствуются программисты, реализующие программы на Java и C++.
В языке Java принято первое слово, входящее в название переменной записывать с маленькой латинской буквы, следующее слово идет с большой буквы (только первая буква слова большая), слова не имеют разделителей и состоят только из латинских букв. Например, правильные записи переменных в Java могут выглядеть следующим образом: javaIdentifier, longAndMnemonicIdentifier, name, nEERC.
В языке C++ для описания переменных используются только маленькие латинские символы и символ «_», который отделяет непустые слова друг от друга. Примеры: java_identifier, long_and_mnemonic_identifier, name, n_e_e_r_c.
Вам требуется написать программу, которая преобразует переменную, записанную на одном языке в формат другого языка.
Входные данные
Во входном потоке задано наименование переменной длиной не более 100 символов.
Выходные данные
В выходной поток требуется вывести аналог имени переменной в другом языке. Т.е. если переменная представлена в формате Java, то следует перевести в формат C++ и наоборот. В том случае, когда имя переменной не соответствует ни одному из вышеописанных языков, следует вывести «Error!».
Со входного потока считывается название переменной, которая помещается в переменную $varName$. Затем вызывается вспомогательная функция $parseLanguage$, которая возвращает одно из значений enum: относится ли переменная к языку С++, Java, универсальная ли она или же, если ничего из вышеперечисленного не подошло, возвращает ошибку. Далее, проанализировав значение, которое нам вернула функция, решается, что делать с переменной: либо конвертировать её в переменную C++, либо в переменную Java, либо оставить её, как есть (универсальная переменная). В ином случае это ошибка, что тоже выводится. Функции $toCPP$ и $toJava$ также являются вспомогательными, которые «переводят» переменную из одного языка в другой.
Дана матрица $A$ размера $m\times m$. Получить матрицу $AA^{*}$ (ее размер $m\times m$).
Размер матрицы:
m
4
Матрица:
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
Результирующая матрица:
30
70
20
50
70
174
68
122
20
68
86
44
50
122
44
86
Ход решения:
На входе считываем $m$ — размер матрицы. После этого создаем два вложенных массива — $A$ для хранения вводимых значений и вычислений, $result$ — для результатов вычислений. Переменная $sum$ нужна для хранения временного результата суммы произведений $A[i,k]A[j,k]$.
В некотором учебном заведении функционирует кружок хорового пения. Начало кружка всегда происходит единообразно: по сигналу руководителя кружка все [latex]N[/latex] участников становятся в круг и каждый [latex]M[/latex]-й для распевки поёт гамму.
Руководитель кружка заметил, что размять голосовые связки не всегда удаётся всем участникам кружка. По заданным [latex]M[/latex] и[latex]N[/latex] помогите ему определить, или в очередной раз в разминке примут участие все участники хора.
Входные данные
Входные данные состоят из нескольких тестовых случаев. Каждый тестовый случай расположен в отдельной строке и содержит два целых числа [latex]M[/latex] и [latex]N[/latex].
Выходные данные
Для каждого тестового случая в отдельной строке выведите «Yes», если в разминке примут участие все участники хора, в противном случае выведите «No».
Тесты:
n
m
answer
4
1
Yes
6
3
No
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
classMain
{
staticfunctionmain()
{
varn,m,p;
n=getNextInt();
while((m=getNextInt())>0)
{
while((p=n%m)!=0)
{
n=m;
m=p;
}
varresult=m==1?"Yes":"No";
varoutput=Sys.stdout();
output.writeString(result+"\n");
}
}
staticfunctiongetNextInt()
{
varnumber=Sys.stdin().readLine();
returnStd.parseInt(number);
}
}
Ход решения:
Для начала нам надо найти наибольший общий делитель (НОД). Для этого хорошо подойдет алгоритм Евклида и если НОД равен единице, то все ученики распоются и на выходе подаётся «Yes», иначе «No».
Для отправки комментария необходимо войти на сайт.