Задача:
Даны действительные числа [latex]{a}_{1},{a}_{2},\dots[/latex] . Известно, что [latex]{a}_{1}>0[/latex] и что среди [latex]{a}_{2},{a}_{3},\dots[/latex] есть хотя бы одно отрицательное число. Пусть [latex]{a}_{1},\dots,{a}_{n}[/latex] – члены данной последовательности, предшествующие первому отрицательному члену (n заранее неизвестно). Получить:
б) [latex]{a}_{1}{a}_{2}\dots{a}_{n}[/latex];
Тесты:
Последовательность | [latex]{a}_{1}{a}_{2}\dots{a}_{n}[/latex] | Комментарий |
1 2 3 4 -1 2 | 24 | Пройден |
0.5 0.4 0.3 0.2 0.1 -0.1 -0.2 -0.3 | 0.0012 | Пройден |
1.5 -1 50 | 1.5 | Пройден |
1 2 3 4 3 2 1 0 -1 | 0 | Пройден |
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> using namespace std; int main() { double mul = 1; //Произведение double x; while(cin >> x && x>=0) mul *= x; cout << mul; return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import java.util.*; import java.lang.*; import java.io.*; class Main { static Scanner sc = new Scanner(System.in); public static void main (String[] args) throws java.lang.Exception { double mul = 1; double x; while(sc.hasNext()){ x = sc.nextDouble(); if(x < 0){ break; } mul *= x; } System.out.println(mul); } } |
Идея решения:
Считывать числа с потока ввода. Если считанное число отрицательное, остановится и вывести накопленное произведение на экран. Иначе умножить произведение на очередное число.
А так не лучше? —
Зачтено. Но как-то без изящества.
Несколько переделал код. Но, простите, как можно проявить изящество в задаче на 10 строк? Причем такой!
На ideone ещё вист Ваш старый вариант
Виноват, исправил
Java-версия засчитана, 10 баллов.