Задача №6277 с сайта e-olimp.com.
Сколько бутылок воды можно выпить на [latex]n[/latex] грн, учитывая, что пустые бутылки можно сдавать, и на полученные деньги приобретать новые бутылки воды.
Входные данные
Натуральное число [latex]n[/latex] (1 ≤ [latex]n[/latex] ≤ 1000).
Выходные данные
Количество бутылок воды, которое можно выпить на [latex]n[/latex] грн.
[latex]n[/latex] | Результат |
2 | 1 |
10 | 9 |
0.7 | 0 |
Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> using namespace std; int main() { int n; cin >> n; //Чтение из стандартного потока. int j=0; while( n>(1.2) ) { n--; j++; } cout << j << endl; return 0; } |
Задача решена методом моделирования. Вычисления проведены согласно условию, представленному в задаче. По условию задачи необходимо узнать сколько можно выпить бутылок имея [latex]n[/latex] грн. Для этого описываем и считываем количество денег [latex]n[/latex], а также создаем счетчик, определяющий сколько бутылок воды в итоге можно купить. Затем создаем цикл, в котором пока мы имеем достаточно средств покупаем воду за 1.2 грн и сразу же сдаем бутылку за 0.2 грн, в результате количество денег уменьшается на 1, а счетчик увеличивается на 1. Когда количество денег станет меньше 1.2 грн выходим из цикла и печатаем количество купленных бутылок.
Для проверки работы программы можно воспользоваться объектом.
Имеется альтернативный линейный вариант решения:
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> using namespace std; int main() { long long n; cin >> n; n=n-0.2; cout << n << endl; } |
http://ideone.com/ClAaK4
Решение принято
Код на Javа:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); int n; n = in.nextInt(); System.out.println(n-1); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); int n; n = in.nextInt(); int j=0; while( n>(1.2) ) { n--; j++; } System.out.println(j); } } |
Жаль, что n до 1000. Я бы сделал до 10^12 и иначе как формулой или за логарифм ее бы решить было нельзя. Ваш цикл легко меняется на одну операцию.
Нужна ссылка на сайт с задачей и результатами её тестирования (принята или нет).
Задача решена методом моделирования. Т.е. проведение вычислений по процедуре описанной в задаче. Нужно это написать.
И поправьте отступы, добавьте метки из текста задачи.
Отредактировано.
Засчитано.
Кстати, в альтернативном решении можно было вычитать 1, а не 0.2 и избежать излишних преобразований в действительное число и потом обратно в целое.
Если бы начальная сумма задавалась «с копейками», то действительно нужно было бы отнять от нею 0.2 и отбросить дробную часть.
— Ссылки на e-olymp.com не работают.
— Пожалуйста, исходите из того, что задача решается так:
Задача отредактирована.
Java версия засчитана!