int(3) возвращает 2 (C++) Uri Online Judge

Дорогая община. Я пытался решить некоторые проблемы в URI Online Judge

Конкретно этот:

https://www.urionlinejudge.com.br/judge/en/problems/view/1021

Я думаю, что нашел хорошую душу. Но у этого есть проблема с определенным входом.

Вот код:

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

float n[] {100, 50, 20, 10, 5, 2, 1, .5, .25, .1, .05, .01};
float x;
int j = 0;
string tipo[] {"nota(s)", "moeda(s)"};

main(){

    cin >> x;

    cout<< fixed;
    cout<< setprecision(2);
    cout<< "NOTAS:\n";
    for (int i = 0; i < 12; i++){

        cout<< int(x/n[i]) << " " << tipo[j]<< " de R$ " << n[i] << endl;
        x = fmod(x, n[i]);

        if (i == 5) {cout<< "MOEDAS:\n"; j=1;}
    }
}

Если вы используете 576.73 в качестве входных данных... Лас номер неверный

Вместо "3 moeda(s) de R$ 0.01" он возвращает "2 moeda(s) de R$ 0.01"

Я проверил все варианты, и он работает правильно, но в конце, когда это сделать:

int (0.03 / 0.01) // Возвращает 2

И x = fmod (0,03, 0,01) // x = 1

Кто-то имеет представление о том, что происходит??

Все остальные входы, которые я пробовал, работают должным образом.

Спасибо за ваше время.

0 ответов

Другие вопросы по тегам