e-olymp 662. Налог

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

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

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

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

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

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

Входные данные

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

Выходные данные

Выведите одно натуральное число – величину налога.

Тесты

Входные данные Выходные данные
[latex]12345600[/latex] [latex]123456[/latex]
[latex]158874554[/latex] [latex]1588746[/latex]
[latex]1000001[/latex] [latex]10001[/latex]
[latex]555555[/latex] [latex]5556[/latex]
[latex]525252[/latex] [latex]5253[/latex]
[latex]100000000[/latex] [latex]1000000[/latex]

Код программы(string)

Решение задачи

Так как у нас по условию $10^{200}$ нам нужно использовать string, ибо в long int такое число не поместится. Поэтому, есть строка, каждый символ которой, это цифра. Округляем по условию, то есть если последние два символа — нули, то просто выдаем подстроку, без последних двух символов ( s.substr(0, s.size() - 2) ). В любом случае, нужно округлять вверх, для этого, к третей с конца цифре добавляем один. Если цифра была $9$, то она станет $0$, а к следующей по возрастанию цифре применим такое-же действие. Если текущая цифра последняя, то нужно добавить перед ней еще единицу.

Ссылки

  • Задача на сайте E-olymp
  • Код решения в Ideone

Related Images:

One thought on “e-olymp 662. Налог

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