- Задача — Найти число с максимальной суммой цифр — программирование на разных языках
- Задача — Найти число с максимальной суммой цифр — программирование на Pascal, Си, Кумир, Basic-256, Python
- Pascal
- Язык Си
- Python
- КуМир
- Basic-256
- Найти число с максимальной суммой цифр
- Pascal
- Язык Си
- Python
- КуМир
- Basic-256
- Задание 1 — Обработка числовых данных (лабораторная по Си)
- Z1. Циклы и условные операторы. Простейшие задачи
- Задачи
- Решение задач на С++
- понедельник, 14 февраля 2011 г.
- Операторы цикла
Задача — Найти число с максимальной суммой цифр — программирование на разных языках
Задача — Найти число с максимальной суммой цифр
— программирование на Pascal, Си, Кумир, Basic-256, Python
Среди натуральных чисел, которые были введены, найти наибольшее по сумме цифр. Вывести на экран это число и сумму его цифр.
- Создать переменные для хранения самой большой суммы цифр (max_s) и числа, которое они составляют (max_m). Присвоить им нули.
- Пока не будет введен 0,
- найти сумму цифр числа.
- Если сумма цифр больше сохраненного ранее значения в max_s, то сохранить в ней данную сумму. Присвоить max_m текущее «исследуемое» число.
- После того, как ввод чисел будет закончен, вывести на экран значения max_s и max_m.
Pascal
var n,m,s,max_s,max_m: integer;
begin
readln(n);
max_s := 0;
max_m := 0;
while n <> 0 do begin
m := n;
s := 0;
while n > 0 do begin
s := s + n mod 10;
n := n div 10;
end;
if s > max_s then begin
max_s := s;
max_m := m;
end;
readln(n);
end;
writeln(‘Число ‘, max_m,’ имеет максимальную сумму цифр: ‘, max_s);
end. 3781
3902
2850
7121
8090
0
Число 3781 имеет максимальную сумму цифр: 19
Язык Си
main() <
int n,m,s,max_m,max_s;
scanf(«%d»,&n);
max_m = 0;
max_s = 0;
while (n != 0) <
m = n;
s = 0;
while (n > 0) <
s += n%10;
n = n/10;
>
if (s > max_s) <
max_s = s;
max_m = m;
>
scanf(«%d»,&n);
>
printf(«Число %d имеет максимальную сумму цифр: %dn»,max_m,max_s);
> 20199
97483
95732
87737
0
Число 87737 имеет максимальную сумму цифр: 32
Python
n = int(input())
max_s = 0
max_m = 0
while n != 0:
m = n
s = 0
while n>0:
s += n%10
n //= 10
if s > max_s:
max_s = s
max_m = m
n = int(input())
print(‘Число’,max_m,’имеет максимальную сумму цифр:’, max_s) 789
5076
12077
0
Число 789 имеет максимальную сумму цифр: 24
КуМир
алг макс сумма цифр
нач
цел n,m,s,max_s,max_m
ввод n
max_s := 0
max_m := 0
нц пока n<>0
m := n
s := 0
нц пока n>0
s := s + mod(n,10)
n := div(n,10)
кц
если s > max_s то
max_s := s
max_m := m
все
ввод n
кц
вывод «Число «,max_m,» имеет максимальную сумму цифр: «,max_s
кон 578
45
345
9033
0
Число 578 имеет максимальную сумму цифр: 20
Basic-256
input n
max_s = 0
max_m = 0
while n <> 0
m = n
s = 0
while n > 0
s = s + n%10
n = n10
endwhile
if s > max_s then
max_s = s
max_m = m
endif
input n
endwhile
print «Число » + max_m + » имеет максимальную сумму цифр: » + max_s 283713
834722
297447
237447
377462
917442
824743
0
Число 297447 имеет максимальную сумму цифр: 33
Источник
Найти число с максимальной суммой цифр
Среди натуральных чисел, которые были введены, найти наибольшее по сумме цифр. Вывести на экран это число и сумму его цифр.
- Создать переменные для хранения самой большой суммы цифр ( max_s ) и числа, которое они составляют ( max_m ). Присвоить им нули.
- Пока не будет введен 0,
- найти сумму цифр числа.
- Если сумма цифр больше сохраненного ранее значения в max_s , то сохранить в ней данную сумму. Присвоить max_m текущее «исследуемое» число.
- После того, как ввод чисел будет закончен, вывести на экран значения max_s и max_m .
Pascal
Язык Си
Python
КуМир
Basic-256
var n,m,s,max_s,max_m: integer;
begin
readln(n);
max_s := 0;
max_m := 0;
while n 0 do begin
m := n;
s := 0;
while n > 0 do begin
s := s + n mod 10;
n := n div 10;
end;
if s > max_s then begin
max_s := s;
max_m := m;
end;
readln(n);
end;
writeln(‘Число ‘, max_m,’ имеет максимальную сумму цифр: ‘, max_s);
end.
3781
3902
2850
7121
8090
0
Число 3781 имеет максимальную сумму цифр: 19
main() <
int n,m,s,max_m,max_s;
scanf(«%d»,&n);
max_m = 0;
max_s = 0;
while (n != 0) <
m = n;
s = 0;
while (n > 0) <
s += n%10;
n = n/10;
>
if (s > max_s) <
max_s = s;
max_m = m;
>
scanf(«%d»,&n);
>
printf(«Число %d имеет максимальную сумму цифр: %d\n»,max_m,max_s);
>
20199
97483
95732
87737
0
Число 87737 имеет максимальную сумму цифр: 32
n = int(input())
max_s = 0
max_m = 0
while n != 0:
m = n
s = 0
while n>0:
s += n%10
n //= 10
if s > max_s:
max_s = s
max_m = m
n = int(input())
print(‘Число’,max_m,’имеет максимальную сумму цифр:’, max_s)
789
5076
12077
0
Число 789 имеет максимальную сумму цифр: 24
алг макс сумма цифр
нач
цел n,m,s,max_s,max_m
ввод n
max_s := 0
max_m := 0
нц пока n0
m := n
s := 0
нц пока n>0
s := s + mod(n,10)
n := div(n,10)
кц
если s > max_s то
max_s := s
max_m := m
все
ввод n
кц
вывод «Число «,max_m,» имеет максимальную сумму цифр: «,max_s
кон
578
45
345
9033
0
Число 578 имеет максимальную сумму цифр: 20
input n
max_s = 0
max_m = 0
while n 0
m = n
s = 0
while n > 0
s = s + n%10
n = n\10
endwhile
if s > max_s then
max_s = s
max_m = m
endif
input n
endwhile
print «Число » + max_m + » имеет максимальную сумму цифр: » + max_s
283713
834722
297447
237447
377462
917442
824743
0
Число 297447 имеет максимальную сумму цифр: 33
Источник
Задание 1 — Обработка числовых данных (лабораторная по Си)
Лабораторная работа для школ и вузов по решению задач по обработке числовых данных с помощью ветвления и циков на языке C (Си). Перечень задач лабораторной работы (клик по ссылке направляет на решение задачи, если таковое имеется):
- Для данных чисел a, b и c определить, сколько корней имеет уравнение ax^2 + bx + c = 0, и распечатать их. Если уравнение имеет комплексные корни, то распечатать их в виде v +- iw.
- Подсчитать количество натуральных чисел n (111 a.
- Даны натуральное число n и вещественное число x. Среди чисел exp(cos(x^2k))sin(x^3k) (k = 1, 2, . n) найти ближайшее к какому-нибудь целому.
- Дано натуральное число n. Найти значение числа, полученного следующим образом: из записи числа n выбросить цифры 0 и 5, оставив прежним порядок остальных цифр.
- Дано натуральное число n. Получить все такие натуральные q, что n делится на q^2 и не делится на q^3.
- Дано натуральное число n. Получить все его натуральные делители.
- Дано целое число m > 1. Получить наибольшее целое k, при котором 4^k = 2 и делится только на 1 и на себя).
- Даны вещественные числа x и y (x > 0, y > 1). Получить целое число k (положительное, отрицательное или равное нулю), удовлетворяющее условию y^k-1 0 значение числа e — предел последовательности
при i ? ? xi = (1 + 1 / i)^i, i = 1, 2, . . Считать, что требуемая точность достигнута, если |xi — xi+1| 0. Для a > 0 величина вычисляется следующим образом: a0 = 1; ai+1 = 0.5 ? (ai + a / ai ) i = 0, 1, 2, . . Считать, что требуемая точность достигнута, если |ai — ai+1|
Скачать файл лабораторной и все исходные коды программ в архиве:
Также вы можете заказать решение своих лабораторных работ на языке C++ и многих других:
Источник
Z1. Циклы и условные операторы. Простейшие задачи
Напишите в комментариях к этой записи консольные приложения для решения этих задач, укажите также код задачи. Пример решения.
Решены задачи: 1-9, 12. Не решены: 10-11, 13.
Задачи
Z1.1. Вывести на экран все целые числа от 100 до 200, кратные трем.
Z1.2. Вывести на экран все целые числа от a до b, кратные некоторому числу c.
Z1.3. Найти сумму положительных нечетных чисел, меньших 50.
Z1.4. Найти сумму целых положительных чисел из промежутка от a до b, кратных четырем.
Z1.5. Составить программу поиска четырехзначных чисел, которые при делении на 47 дают в остатке 43, а при делении на 43 дают в остатке 37.
Z1.6. Составить программу поиска четырехзначных чисел, которые при делении на 133 дают в остатке 125, а при делении на 134 дают в остатке 111.
Z1.7. Определить количество натуральных чисел из интервала от 100 до 500, сумма цифр которых равна 15. Подсказка.
Z1.8. Определить количество трехзначных натуральных чисел, сумма цифр которых равна целому числу n (0 ˂ n ˂= 27).
Z1.9. Найти:
а) все двузначные числа, сумма квадратов цифр которых делится на 13;
б) все двузначные числа, обладающие следующим свойством: если к сумме цифр числа прибавить квадрат этой суммы, то получится снова искомое число.
Z1.10. Найти все двузначные числа, которые делятся на n или содержат цифру n.
Z1.11. Найти:
а) все трехзначные числа, чьи квадраты оканчиваются тремя цифрами, которые и составляют искомые числа;
б) все трехзначные числа, кратные семи и у которых сумма цифр также кратна семи.
Z1.12. Найти сумму целых положительных чисел, больших 30 и меньших 100, кратных трем и оканчивающихся на 2, 4 и 8.
Z1.13. Дано натуральное число.
а) Получить все его делители.
б) Найти сумму его делителей.
в) Найти сумму его четных делителей.
г) Определить количество его делителей.
д) Определить количество его нечетных делителей.
е) Определить количество его делителей. Сколько из них четных?
ж) Найти количество его делителей, больших d.
Источник
Решение задач на С++
понедельник, 14 февраля 2011 г.
Операторы цикла
Цикл For. Блок 2. Задачи на цикл For.
Задача A. Четные числа
Выведите (через пробел) все четные числа от a до b (включительно).
- int a, b ;
- cin >> a >> b;
- for ( int i = a; i if (i % 2 == 0)
- cout ‘ ‘ ;
* This source code was highlighted with Source Code Highlighter .
Задача B. Остаток
Вводятся 4 числа: a, b, c и d.
Выведите все числа на отрезке от a до b, дающие остаток c при делении на d.
- int a, b, c, d ;
- cin >> a >> b >> c >> d;
- for ( int i = a ; i if (i % d == c)
- cout ‘ ‘ ;
* This source code was highlighted with Source Code Highlighter .
Задача C. Квадраты
Выведите все числа на отрезке от a до b, являющиеся полными квадратами.
- int a , b;
- cin >> a >> b ;
- int sqrt_a = ceil(sqrt(a + 0.0));
- int sqrt_b = sqrt(( double )b);
- for ( int i = sqrt_a ; i » » ;
* This source code was highlighted with Source Code Highlighter .
В этом случае мы рационально движемся от sqrt(a) к sqrt(b), т.к. проверка меньших и больших значений смысла не имеет.
Нужно обратить внимание, что корень от а округляется в большую сторону ceil(sqrt(a + 0.0) перед отправкой в цикл: если а – и есть полный квадрат, то это число также должно быть выведено, однако, если а дает дробный корень, то его целая часть (при приведении к типу int) даст заведомо меньший квадрат, чем значение а. Поэтому мы заранее округляем sqrt(a) до следующего целого числа, дабы избежать выведение лишнего квадрата.
Варинат 2.
Этот вариант реализации менее рациональный, однако более прозрачный. Мы напрямую движемся от а до b c проверкой полноты квадрата каждого из текущих значений.
Задача H. Делители числа
Выведите все натуральные делители числа x в порядке возрастания (включая 1 и само число).
- int x;
- cin >> x;
- for ( int i = 1 ; i if ( x % i == 0 )
- cout ‘ ‘ ;
* This source code was highlighted with Source Code Highlighter .
Задача I. Количество делителей
Подсчитайте количество натуральных делителей числа x (включая 1 и само число; x
- int x, k = 0;
- cin >> x;
- for ( int i = 1; i if (x % i == 0 )
- k++;
- cout * This source code was highlighted with Source Code Highlighter .
Задача J. Сумма ста
Вычислите сумму данных 100 натуральных чисел. Вводятся 100 чисел, сумму которых необходимо посчитать.
- int x;
- long long sum = 0;
- for ( int i = 1; i > x;
- sum += x;
- >
- cout * This source code was highlighted with Source Code Highlighter .
Задача K. Сумма чисел
Вычислите сумму данных N натуральных чисел. Вводится число N, а затем N чисел, сумму которых необходимо вычислить.
- int n, x;
- long long sum = 0;
- cin >> n;
- for ( int i = 1; i > x;
- sum += x;
- >
- cout * This source code was highlighted with Source Code Highlighter .
Задача M. Нули
Вводится число N, а затем N чисел. Подсчитайте, сколько среди данных N чисел нулей.
Задача N. Подсчет чисел
Подсчитайте, сколько среди данных N чисел нулей, положительных чисел, отрицательных чисел. Вводится число N, а затем N чисел. Необходимо вывести сначала число нулей, затем число положительных и отрицательных чисел.
- int n, x;
- int zero = 0, pos = 0, neg = 0;
- cin >> n;
- for ( int i = 1; i > x;
- if (x == 0) zero++;
- else if (x > 0) pos++;
- else neg++;
- >
- cout ‘ ‘ * This source code was highlighted with Source Code Highlighter .
При данной реализации мы каждый раз в цикле прогоняем последовательную проверку числа на знак. Сейчас это не доставляет никаких неудобств, т.к. мы имеем всего 3 критерия подсчета. Однако, если б требовалась более широкая проверка, например, относительно 10-ти различных случаев, то рациональнее было бы использовать сase–структуру. Что и сделано в варианте 2
Вариант 2.
Используем сase–структуру для определения знака, предварительно нормировав ненулевые значения в единицу (1/-1).
Задача O. Ноль или не ноль
Проверьте, есть ли среди данных N чисел нули. Вводится число N, а затем N чисел. Выведите YES, если среди введенных чисел есть хотя бы один нуль, или NO в противном случае.
This source code was highlighted with Source Code Highlighter .
Вариант 2.
Ту же самую идею можно описать короче.
- int x, n;
- cin >> n;
- bool zeroExist = false ;
- for ( int i = 1; i > x;
- zeroExist = zeroExist | (x == 0);
- if (zeroExist)
- break ;
- >
- cout «YES» : «NO» );
* This source code was highlighted with Source Code Highlighter .
Задача P. Уравнение по возрастанию
Вводятся 4 числа: a, b, c и d.
Найдите все целые решения уравнения ax 3 + bx 2 + cx + d = 0 на отрезке [0,1000] и выведите их в порядке возрастания.
- long long a , b , c , d ;
- cin >> a >> b >> c >> d;
- for ( int i = 0; i if ( a*i*i*i + b*i*i + c*i + d == 0)
- cout ‘ ‘ ;
* This source code was highlighted with Source Code Highlighter .
Задача Q. Уравнение по убыванию
Вводятся 4 числа: a, b, c и d.
Найдите все целые решения уравнения ax 3 + bx 2 + cx + d = 0 на отрезке [0,1000] и выведите их в порядке убывания.
- long long a, b, c, d;
- cin >> a >> b >> c >> d;
- for ( int i = 1000; i >= 0; i—)
- if (a*i*i*i + b*i*i + c*i + d == 0)
- cout ‘ ‘ ;
* This source code was highlighted with Source Code Highlighter .
Задача R. Количество решений
Вводятся 5 чисел: a, b, c, d и e.
Найдите все целые решения уравнения ( ax 3 + bx 2 + cx + d ) / ( x — e ) = 0 на отрезке [0,1000] и выведите их количество.
- long long a, b, c, d, e;
- cin >> a >> b >> c >> d >> e ;
- int k = 0;
- for ( int i = 0; i if (a*i*i*i + b*i*i + c*i + d == 0)
- if (i — e != 0)
- k++;
- cout * This source code was highlighted with Source Code Highlighter .
Задача S. ГНЧЭ-1
«ГНЧЭ-1» – сложное электронное устройство, выдающее каждую секунду очередное число последовательности 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5. Ввиду дороговизны электронных комплектующих вам поручено разработать эмулятор для этого устройства.
Дано количество секунд (от 1 до 1000000), которые работает генератор после включения. Вывести результат работы генератора
Вариант 1.
При таком варианте реализации мы печатаем столько раз текущее значение cur сколько оно само обозначает count , после чего обнуляем подсчет одинаковых выводов count и переходим на следующее текущее значение cur и т.д.
Вариант 2.
В этом варианте решения идея та же. Однако контроль за количеством отработанных секунд и количеством напечатанных текущих значений возложены на два отдельных цикла.
Итак, здесь мы ведем подсчет напечатанных позиций pos , которых должно быть ровно столько же, сколько секунд работает машина. А внутренним циклом задаем печать текущего числа cur . Проверка условия if (pos == n) не даст задержаться во внутреннем цикле дольше положенных секунд.
- int n;
- cin >> n;
- int pos = 0, cur = 1;
- for ( ; pos for ( int i = 0; i «%d » , cur);
- pos++;
- if (pos == n)
- break ;
- >
- cur++;
- >
* This source code was highlighted with Source Code Highlighter .
Источник