思路:

  1. 首先 先普及一个性质: 循环矩阵*循环矩阵=循环矩阵

    由于此题是距离小于d的都加上一个数。

    那么 构造矩阵的时候 我们发现 诶呦 这是个循环矩阵

    看看数据范围 n^2log(k)可以过。

    那就把这个矩阵改一改。

    因为这是个循环矩阵, 所以呢 只用保存一行就可以了。

    每回做乘法的时候只做第一行的乘法。

    for(i) for(j) temp[i]+=a[j]*b[(i+j)%n];

    就这么着 搞搞就能过了。

  2. (好像可以用FFT? 表示并不会)

// by SiriusRen
#include <cstdio>
#include <cstring>
#define LL long long
using namespace std;
long long f[666],co[666],c[666];
int n,m,d,k;
void mul(LL *a,LL *b){
memset(c,0,sizeof(c));
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
c[i]+=a[j]*b[(i+j)%n];
for(int i=0;i<n;i++)b[i]=c[i]%m;
}
int main(){
scanf("%d%d%d%d",&n,&m,&d,&k);
for(int i=0;i<n;i++)scanf("%lld",&f[i]);
for(int i=0;i<=d;i++)co[i]=co[n-i]=1;
while(k){
if(k&1)mul(co,f);
mul(co,co),k>>=1;
}
for(int i=0;i<n;i++)printf("%lld ",f[i]);
}

// by SiriusRen
#include <cstdio>
#define LL long long
#define f(Q,R) for(int Q=0;Q<R;Q++)
using namespace std;
LL f[666],co[666],c[666];
int n,m,d,k;
void mul(LL *a,LL *b){
f(i,n)c[i]=0;
f(i,n)f(j,n)c[(i+j)%n]+=a[i]*b[j];
f(i,n)b[i]=c[i]%m;
}
int main(){
scanf("%d%d%d%d",&n,&m,&d,&k);
f(i,n)scanf("%lld",&f[i]);
f(i,d+1)co[i]=co[n-i]=1;
while(k){
if(k&1)mul(co,f);
mul(co,co),k>>=1;
}
f(i,n)printf("%lld ",f[i]);
}



Code length能进前三的存在哈哈哈

最新文章

  1. JAVA Shallow heap &amp; Retained heap
  2. 从SqlServer转手Oracle的一些坑
  3. 创建 iPhone/iOS8 弹出菜单(窗口)
  4. 百度识图API
  5. A Game of Thrones(3) - Daenerys
  6. prologue epilogue
  7. 【Linux基础】mount报错:mount.nfs: Remote I/O error
  8. Linux内存管理 (25)内存sysfs节点解读
  9. 去掉MyEclipse 中烦人的黄线和感叹号!
  10. java获取泛型类型
  11. Aspose.word
  12. DevExpress GridView自动滚动
  13. dockerfile安装php遇到的坑
  14. ubuntu上第一个hello程序
  15. (转)VmWare下安装CentOS6图文安装教程
  16. LeetCode224——Basic Calculator
  17. [UE4]计算2点坐标附近的坐标:线性插值法
  18. OSX: SSH密钥使用日记(1)
  19. centos 无法ping内网 Destination Host Unreachable
  20. java 调用webservice (asmx) 客户端开发示例

热门文章

  1. Css 分类 属性 选择器
  2. html5左右滑动页面效果实现
  3. 1350 Taxi Cab Scheme DAG最小路径覆盖
  4. 【从零开始】【Java】【3】改造成多模块项目
  5. Linux 内核剖解(转)
  6. JavaScript数组操作函数
  7. spring cloud(四) feign
  8. WebStorm 配置 svn
  9. Javaee 方法的构建和调用
  10. 功分器 power divider