Я должен решить проблему в C ++, в которой я должен вычислить модуль числа, сформированного как 10 ^ n. Но проблема в том, что n — это число с плавающей запятой, поэтому, если я вычислю 10 ^ n как pow (10.0, n), оно может переполниться. Поэтому я ищу решение, которое может вычислить 10 ^ n mod m без проблем переполнения. Я обычно использую Python, где это очень просто, я не знаю, как решить в C ++.
Как насчет округление сначала сохраняем цифры меньше 1 в переменной с плавающей запятой (вы получите их, вычтя округленную переменную из исходного числа с плавающей запятой), а затем выполните модуль с округленным значением. Затем сложите переменную с плавающей точкой
Это решит вашу проблему?
РЕДАКТИРОВАТЬ (см. Комментарий и для лучшего взгляда ;-))
10^7.4 = 25118864.315[...]
--> round = 25118864,
float = 0.315,
round % 6 = 2,
--> (10^7.4)%6 = 2 + 0.315 = 2.315
как калькулятор в Windows даст вам
Других решений пока нет …