zoukankan      html  css  js  c++  java
  • 【BZOJ3453】XLkxc

    http://192.168.102.138/JudgeOnline/problem.php?id=3170

    知识点:1.拉格朗日插值(多特殊函数相加)

        2.这个式子看似非常复杂,然而只要明白这个式子拆开是一个只有一个变量的多项式就OK,不管这个多项式有多复杂,但只要知道k+4个点的点值,就可以使用插值给弄出来

        3.这题要求的式子其实拆开后与a和d并无关系,只是一个有k+4项的多项式,所以我们插值取的x与a,d并无关系

    #include <bits/stdc++.h>
    #define p 1234567891
    #define N 157
    #define ll long long
    using namespace std;
    ll a,n,d,m,k;
    ll s1[N],s2[N];
    ll g[N],f[N],inv[N<<1];
    int read()
    {
        int tt;
        scanf("%d",&tt);
        return tt;
    }
    ll fast_pow(ll a,ll b)
    {
        ll ans = 1;
        while(b)
        {
            if (b & 1) 
                (ans *= a) %= p;
            (a *= a) %= p;
            b >>= 1;
        }
        return ans;
    }
    inline ll Lagrange(ll *a,int n,ll pos)
    {
        if (pos <= n) return a[pos];
        ll ans = 0;
        for (int i = 1;i <= n;i++)
        {
            ll s1 = 1,s2 = 1;
            for (int j = 1;j <= n;j++)
                if (i != j)
                {
                    (s1 *= (pos - j)) %= p;
                    (s2 *= (i - j)) %= p;
                }
            (ans += a[i] * s1 % p  * fast_pow(s2,p - 2)) %= p;
    }
        return ans;
    }
    int main()
    {
        int T = read();
        while(T--)
        {
            k = read(),a = read(),n = read(),d = read();
            for (int i = 1;i <= k + 3;i++) g[i] = fast_pow(i,k);
            for (int i = 2;i <= k + 3;i++) (g[i] += g[i - 1]) %= p;
            for (int i  = 2; i <= k + 3;i++) (g[i] += g[i - 1]) %= p;
            f[0] = Lagrange(g,k+3,a);
            for (int i = 1;i <= k + 5;i++) f[i] = Lagrange(g,k + 3,(i * d + a) % p),(f[i] += f[i - 1]) %= p;
            printf("%lld
    ",(Lagrange(f,k + 5,n)  + p) % p);
        }
        return 0;
    }
  • 相关阅读:
    [leetcode] Valid Sudoku
    [leetcode] Count and Say
    [leetcode] Decode Ways
    [leetcode] Sqrt(x)
    [leetcode] Best Time to Buy and Sell Stock II
    7-27 兔子繁衍问题
    7-26 最大公约数和最小公倍数
    7-25 求奇数和
    7-24 猜数字游戏
    7-23 分段计算居民水费
  • 原文地址:https://www.cnblogs.com/xyj1/p/13638114.html
Copyright © 2011-2022 走看看