2 / 2 / 0
Регистрация: 02.10.2016
Сообщений: 96
1

Округление не всегда работает

15.06.2021, 14:32. Показов 1898. Ответов 3
Метки c++ (Все метки)

Решаю задачки на acmp и не хочется делать через if, поэтому использую ceil() из cmath. На 6 тесте выдает ошибку. Не понимаю, почему моя логика неправильна

Условие:

Кликните здесь для просмотра всего текста

Портос хочет украсить золотым шитьем свою перевязь. Он знает, что один сантиметр золотого шитья стоит один луидор. Портосу надо вышить N миллиметров перевязи. Причем мастер никогда не возьмется за работу, если ему заплатят меньше, чем стоит работа. И сдачу мастер никогда не отдает.

Какое минимальное количество луидоров Портос должен заплатить мастеру за работу?

Входной файл INPUT.TXT содержит натуральное число N (N ≤ 10^9) – длина перевязи в миллиметрах
В выходной файл OUTPUT.TXT выведите минимальное количество луидоров, которые Портос должен отдать за работу.

Пример: 200 - 20
203 - 21


Мой код:


C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <cmath>
using namespace std;
 
int main(){
    double a;
    cin >> a;
    cout << ceil(a / 10) << endl;
    return 0;
}
P.S. Подозреваю тип double
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2021, 14:32
Ответы с готовыми решениями:

Округление не работает
Добра всем :senor: Вроде простая задача округлить до точки, а стандартно не решится... Не...

RoundTo, как работает округление?
Всем доброго времени суток помогите разобраться, я немного запутался, суть такова: Есть у меня...

Округление числа всегда в большую сторону
Ребят помогите с написанием программы как в dеlphi сделать чтобы число всегда округлялось в большую...

Комп с двумя плашками ОЗУ не всегда работает. С одной - работает
Всем привет. Такая проблема, купил себе i7 6400t и с ним материнку ASRock Z170A-X1. Вставил в два...

3
155 / 107 / 36
Регистрация: 27.06.2018
Сообщений: 249
15.06.2021, 14:42 2
Лучший ответ Сообщение было отмечено Иван6699 как решение

Решение

Возможно, т.к. формат вывода типа double при больших значениях выглядит как 1e+8
C++
1
cout << int(ceil(a / 10)) << endl;
1
Модератор
Эксперт С++
12126 / 9791 / 5916
Регистрация: 18.12.2011
Сообщений: 26,268
15.06.2021, 14:46 3
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
 
int main(){
    int  N;
    cin >> N;
    cout << N / 10 + bool(N%10) << endl;
    return 0;
}
1
2 / 2 / 0
Регистрация: 02.10.2016
Сообщений: 96
15.06.2021, 22:22  [ТС] 4
zss, о, красота. Спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2021, 22:22
Помогаю со студенческими работами здесь

Не работает округление до целого
procedure TForm1.Button1Click(Sender: TObject); var d1,d3,q:Double; begin if not...

Не работает округление double переменных
работаю с 2я векторами, вычисляю угол между ними в радианах и перевожу в градусы. Надо брать...

Округление функцией Round() работает нелогично
Заранее извиняюсь если это слишком тривиально, но все же... Трудность следующая: Допустим...

CURL не всегда работает
Вот небольшой кусок кода &lt;?php $ch = curl_init(&quot;http://vk.com/&quot;); curl_setopt($ch,...

ShellExecute не всегда работает
Здравствуйте. Не подскажите, почему после выполнения кода: if (OpenDialog3-&gt;Execute()) { ...

Микрофон всегда работает
микрофон всегда работает(((


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru