В древней Греции жил мудрец по имени Прокопий, который был славен тем, что мог по любому числу мгновенно определить, есть ли в нем ровно три цифры 3.
Однако отвечал Прокопий только в двоичный системе счисления. Он отвечал «1», если в числе есть три цифры 3, и «0», если нет.
Как-то раз один из самых прилежных учеников Прокопия усомнился в его и спросил его «Учитель, правда ли, что в числе n есть ровно три тройки?», на что получил ответ — число d.
Напишите программу, которая скажет, ошибся учитель, или же был прав в своём ответе.
Формат входных данных
С клавиатуры вводятся два целых числа n и d (∣∣n∣∣≤109, d=0 или d=1).
Формат выходных данных
Ваша программа должна вывести «YES», если мудрец ответил правильно, или «NO», если нет.
входные данные
30303 1
30303 0
12345 1
выходные данные
YES
NO
NO
Это и будет наименьшее время.
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
int n,i,s;
bool priz=true;
cin>>n;
int b[n],c[n];
for (int i=0; i<n; i++)
{
cin>>b[i];
c[i]=i+1;
}
// сортировка масcива по не возрастанию
while (priz)
{
priz=false;
for (int i=0; i<n-1; i++)
{
if (b[i]<b[i+1])
{
swap(b[i],b[i+1]);
swap(c[i],c[i+1]);
priz=true;
}
}
}
s=0;
for (int i=0; i<n; i++) s+=b[i]*(i+1);
cout<<s<<endl;
for (int i=0; i<n; i++) cout<<c[i]<<" ";
cout<<endl;
system("pause");
return(0);
}
Ввод - вывод:
6
10 21 13 36 41 9
332
5 4 2 3 1 6
a : array[1..10] of word;
max : word;
begin
randomize;
for I : byte := 1 to 10 do
a[i] := random(1, 60000);
max := 0;
for I : byte := 1 to 10 do
if a[i] > max then max := a[i];
writeln(max*3);
end.
Добавлю и объяснение. Алгоритм заполняет целочисленный массив из десяти элементов случайными числами. Возможны диапазон числе: от 1 до 60000. Затем в следующем цикле выискивается максимальное число, которое выдал генератор случайных чисел. В строке writeln выводится значение этого числа умноженное на три.