题目描述:

loj

题解:

单位根反演。

$[n|x]=\frac{1}{n} \sum _{i=0}^{n-1} (ω_n^x)^i$

证明?显然啊,要么停在$(1,0)$要么转一圈。

所以说题目要求的是$\sum _{i=0}^{n} C(n,i) * s^i * a_{i\;mod\;4}$

把$a$提前,变成$\sum_{k=0}^{3}a_k \sum _{i=0} ^{n} C(n,i) *s^i [4|i-k]$

然后把上面单位根反演式子套进去。后面变成$\sum _{i=0} ^n C(n,i) * s^i * \frac{1}{4} \sum _{j=0} ^{3} (ω_4 ^{i-1})^j$

把后面提前面:$\frac{1}{4} \sum_{j=0}^3 ω_4^{-j} \sum_{i=0}^{n} C(n,i)*s^i*ω_4^{ij}$

发现二项式定理:$\frac{1}{4} \sum_{j=0}^3 ω_4^{-j} * (sω_4^j+1)^n$

最后就剩快速幂了?

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int MOD = ;
template<typename T>
inline void read(T&x)
{
T f = ,c = ;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){c=c*+ch-'';ch=getchar();}
x = f*c;
}
ll fastpow(ll x,ll y)
{
ll ret = ;
while(y)
{
if(y&)ret=ret*x%MOD;
x=x*x%MOD;y>>=;
}
return ret;
}
int T;
ll n,s,a0,a1,a2,a3,w0,w1,w2,w3,W0,W1,W2,W3,ans,inv;
void work()
{
read(n),read(s),read(a0),read(a1),read(a2),read(a3);n%=(MOD-),ans=;
W0 = fastpow(s*w0%MOD+,n),W1 = fastpow(s*w1%MOD+,n);
W2 = fastpow(s*w2%MOD+,n),W3 = fastpow(s*w3%MOD+,n);
ans=(ans+a0*(w0*W0%MOD+w0*W1%MOD+w0*W2%MOD+w0*W3%MOD)%MOD)%MOD;
ans=(ans+a1*(w0*W0%MOD+w3*W1%MOD+w2*W2%MOD+w1*W3%MOD)%MOD)%MOD;
ans=(ans+a2*(w0*W0%MOD+w2*W1%MOD+w0*W2%MOD+w2*W3%MOD)%MOD)%MOD;
ans=(ans+a3*(w0*W0%MOD+w1*W1%MOD+w2*W2%MOD+w3*W3%MOD)%MOD)%MOD;
printf("%lld\n",ans*inv%MOD);
}
int main()
{
// freopen("tt.in","r",stdin);
read(T);inv = fastpow(,MOD-);
w0=,w1=fastpow(,(MOD-)/),w2=w1*w1%MOD,w3=w1*w2%MOD;
while(T--)work();
return ;
}

loj6485 LJJ 学二项式定理的更多相关文章

  1. LOJ6485 LJJ 学二项式定理 解题报告

    LJJ 学二项式定理 题意 \(T\)组数据,每组给定\(n,s,a_0,a_1,a_2,a_3\),求 \[ \sum_{i=0}^n \binom{n}{i}s^ia_{i\bmod 4} \] ...

  2. 【LOJ#6485】LJJ 学二项式定理(单位根反演)

    [LOJ#6485]LJJ 学二项式定理(单位根反演) 题面 LOJ 题解 显然对于\(a0,a1,a2,a3\)分开算答案. 这里以\(a0\)为例 \[\begin{aligned} Ans&am ...

  3. loj #6485. LJJ 学二项式定理 (模板qwq)

    $ \color{#0066ff}{ 题目描述 }$ LJJ 学完了二项式定理,发现这太简单了,于是他将二项式定理等号右边的式子修改了一下,代入了一定的值,并算出了答案. 但人口算毕竟会失误,他请来了 ...

  4. 题解 LOJ-6485 【LJJ学二项式定理】

    题目 由于看到正解的单位根反演过于复杂 (也就是看不懂) 所以自己构造了一个算法,理论上这个算法应该还有成长的空间(可以变得普适性更强) 不知道和单位根反演有没有一样,就发表出来了 反正转载前记得要联 ...

  5. loj 6485 LJJ学二项式定理 —— 单位根反演

    题目:https://loj.ac/problem/6485 先把 \( a_{i mod 4} \) 处理掉,其实就是 \( \sum\limits_{i=0}^{3} a_{i} \sum\lim ...

  6. LOJ #6485 LJJ 学二项式定理

    QwQ LOJ #6485 题意 求题面中那个算式 题解 墙上暴利 设$ f(x)=(sx+1)^n$ 假设求出了生成函数$ f$的各项系数显然可以算出答案 因为模$ 4$的缘故只要对于每个余数算出次 ...

  7. LOJ 6485 LJJ 学二项式定理——单位根反演

    题目:https://loj.ac/problem/6485 \( \sum\limits_{k=0}^{3}\sum\limits_{i=0}^{n}C_{n}^{i}s^{i}a_{k}[4|(i ...

  8. loj#6485. LJJ 学二项式定理(单位根反演)

    题面 传送门 题解 首先你要知道一个叫做单位根反演的东西 \[{1\over k}\sum_{i=0}^{k-1}\omega^{in}_k=[k|n]\] 直接用等比数列求和就可以证明了 而且在模\ ...

  9. loj #6485. LJJ 学二项式定理 单位根反演

    新学的黑科技,感觉好nb ~ #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s". ...

随机推荐

  1. maven 参考

    系列文章,通俗易懂,可以看看 http://www.cnblogs.com/AlanLee/category/918828.html

  2. 02.Jquery Mobile介绍以及Jquery Mobile页面与对话框

    一.为什么要学Jquery Mobile   JqueryMobile 是jquery的移动版本,懂基本的jquery知识,会简单的html+css就可以完成很多复杂的功能,还有就是这个框架在企业中用 ...

  3. Python-10-条件和条件语句

    num = int(input('Enter a number: ')) if num > 0:     print('The number is positive') elif num < ...

  4. BZOJ 4668: 冷战 并查集&&暴力LCA(雾)

    利用并查集按秩合并,保存每个点合并的时间: 求时间时,就一直跳u=fa[u],并记录路径上时间的最大值,代表最后一次合并的时间 #include<cstdio> #include<i ...

  5. jeecg308自定义使用getDataGridReturn方法分页失效问题

    DataGrid dataGrid = new DataGrid(); dataGrid.setPage(p); dataGrid.setRows(r); dataGrid.setOrder(&quo ...

  6. JAVA 员工管理系统(用抽象类实现),简易版。

    package Demo513; /* 定义一个Employee类,该类包含: private 成员变量name,number,birthday,其中birthday为MyDate类的对象: abst ...

  7. css文字与文本相关样式

    css文字属性定义文本的字体系列,大小,加粗,风格和变形   font-family          设置字体系列 font-size          设置字体的尺寸 font-style     ...

  8. css3Transitions 实现的鼠标经过图标位移、旋转、翻转、发光、淡入淡出等多种特效

    HTML如下:   1 <div class="container"> 3 <!--特效1 --> <section id="set-1&q ...

  9. Windows中将nginx添加到服务

    下载安装nginx http://nginx.org/en/download.html 下载后解压到C盘 C:\nginx-1.14.0 添加服务 需要借助"Windows Service ...

  10. Python 之excle的读写

    一.读取Excel 注:要先安装xlrd 代码如下: #-*- coding: utf8 -*-import xlrd   #引入读excle的类#fname = "reflect.xls& ...