秦九韶算法以及大数取余应用

171 阅读1分钟

秦九韶算法

原理:一元n次多项式

a 0 + a 1 × x 1 + a 2 × x 2 + a 3 × x 3 + a 4 × x 4 . . . . . . + a n × x n a_0+a_1\times x^1+a_2\times x^2+a_3\times x^3+a_4\times x^4... ...+a_n\times x^n a0​+a1​×x1+a2​×x2+a3​×x3+a4​×x4......+an​×xn

可以改写成

a 0 + ( a 1 + ( a 2 + ( a 3 + . . . ) . . . . × x ) × x ) × x a_0+(a_1+(a_2+(a_3+...)....\times x)\times x)\times x a0​+(a1​+(a2​+(a3​+...)....×x)×x)×x

大数取余

#include <bits/stdc++.h>
using namespace std;

int main()
{
    string s;
    cin >> s;
    int mod;
    cin >> mod;
    int ans = 0;
    for (int i = 0; i < s.size(); i++)
        ans = (ans * 10 + s[i] - '0') % mod;
    cout << ans << endl;
    return 0;
}

参考资料