e-olymp 662. Налог

Условие задачи

«Курс валюты Зимбабве опустился накануне до рекордно низкого уровня — $1.2$ млрд. зимбабвийских долларов за один доллар США»
(Новости от $07.06.2009$ )

В некоторой стране инфляция достигла таких размеров, что доходы граждан стали выражаться числами, количество знаков в десятичной записи которых доходит до $200$. Это сильно усложнило задачу взимания налогов.

Один из налогов на доходы составляет $1$. Напишите программу, которая по введенному числу $D$ (величине дохода гражданина) вычислит этот налог.

При этом применяются следующие правила округления:

  1. Если налог выражается целым числом, то он не округляется.
  2. Если налог выражается дробным числом, то он округляется в сторону большего целого (в пользу государства).

Входные данные
Вводится одно число $D$ (натуральное,$10^{5}⩽D<10^{200}$ ) – величина дохода гражданина.
Выходные данные
Выведите одно натуральное число – величину налога.
Тесты

Входные данные Выходные данные
12345600
123456
158874554
1588746
1000001
10001
555555
5556

Код программы

Решение задачи
Так как у нас по условию $10^{200}$ нам нужно использовать String, ибо в long такое число не поместится. Поэтому, есть строка, каждый символ которой, это цифра. Округляем по условию, то есть если последние два символа — нули, то просто выдаем подстроку, без последних двух символов ( s.substring(0, s.length() - 2) ). В любом случае, нужно округлять вверх, для этого, к третей с конца цифре добавляем один. Если цифра была $9$, то она станет $0$, а к следующей по возрастанию цифре применим такое-же действие. Если текущая цифра последняя, то нужно добавить перед ней еще единицу.
Ссылки
Задача на сайте e-olymp
Код решения в Ideone

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *