Я хочу оценить выражение, (an + bn + cn) % 1000000003
в C ++. Я получаю ошибки переполнения, когда n очень велико. Может кто-то помочь мне с этим ? Более конкретно a = q + 1, b = - 2 * q
а также c = q - 1
, Я следовал за функцией, изложенной в этот
Могу ли я сломаться (an + bn + cn) % 1000000003
в (an) % 1000000003 + (bn) % 100000003 + (cn) % 1000000003
или что-то подобное?
Также я не могу использовать ничего больше, чем без знака long long int
Вы можете распространять свой модуль. Математически это будет звучать так:
( ((a^n)%1000000003) + ((b^n)%100000003) + ((c^n)%1000000003) ) % 1000000003;
Это избавит вас от необходимости вычисления чисел, выходящих за пределы, что позволит вам выбирать большие значения для n
,
Просто обязательно используйте pow
в math.h
модуль:
( ((pow(a, n))%1000000003)
+ ((pow(b, n))%100000003)
+ ((pow(c, n))%1000000003) ) % 1000000003;
Других решений пока нет …