LCA大佬的做法:

考虑暴力的高斯消元,我们优化它。

$\sum\limits_{j} gcd(i,j)^{c-d} i^d j^d x_j=b_i$

$\sum\limits_{j} gcd(i,j)^{c-d} y_j = \frac{b_i}{i^d}$($y_j=j^d x_j$)

那么高斯消元的矩阵的$(i,j)$位置的值就是$gcd(i,j)^{c-d}$,我们令$f(x)=x^{c-d}$

我们对于高斯消元的矩阵,只需要保留记录$D[i][i]$位置上的值就可以了。

然后当我们消到第$i$行时,有

$\begin{align*} D[i][j] &= 0 &(j \ mod \ i \ne 0) \\ D[i][j] &= g(i) &(j \ mod \ i =0) \end{align*}$

证明:

$g(i) =f(i)-\sum\limits_{t|i,t<i}g(i)$

令$d=gcd(i,j)$($j \ mod \ i \ne 0$),此时

$D[i][j]=f(d)-\sum\limits_{t|d} g(t) = f(d)-g(d)-\sum\limits_{t|d,t<d}g(d)$

因为$g(d) = f(d) - \sum\limits_{t|d,t<d}g(d)$

所以$D[i][j]=f(d)-f(d)=0$

当$j \ mod \ i =0$时,$gcd(i,j)=i$,所以一开始的$D[i][j]$初始值一样,消的过程中减去的东西一样,所以最后的值也应该一样

//Serene
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
#define ll long long
#define db double
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
#define getchar gc
const int maxn=1e6+7,maxt=1000+7;
const ll mod=998244353;
ll n,C,D,Td,b[maxn]; inline char gc(){
static char buf[100000],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
} char cc;ll ff;
template<typename T>void read(T& aa) {
aa=0;cc=getchar();ff=1;
while((cc<'0'||cc>'9')&&cc!='-') cc=getchar();
if(cc=='-') cc=getchar(),ff=-1;
while(cc>='0'&&cc<='9') aa=aa*10+cc-'0',cc=getchar();
aa*=ff;
} ll qp(ll x,ll k) {
ll rs=1;
while(k) {
if(k&1) rs=rs*x%mod;
k>>=1; x=x*x%mod;
}
return rs;
} ll finv(ll x) {return qp(x,mod-2);} ll qp1(ll x,ll k) {
if(k<0) return qp(x,k+(mod-1));
return qp(x,k);
} ll ans[maxn],f[maxn]; bool solve() {
For(i,1,n) b[i]=b[i]*finv(qp(i,D));
For(i,1,n) f[i]=qp1(i,C-D);
For(i,1,n) {
if(f[i]==0&&b[i]) return 0;
else if(f[i]==0) continue;
for(int j=i<<1;j<=n;j+=i) {
f[j]=(f[j]-f[i]+mod)%mod;
b[j]=(b[j]-b[i]+mod)%mod;
}
ans[i]=b[i]*finv(f[i])%mod;
}
Rep(i,n,1) {
for(int j=i<<1;j<=n;j+=i)
ans[i]=(ans[i]-ans[j]+mod)%mod;
}
For(i,1,n) ans[i]=ans[i]*finv(qp(i,D))%mod;
return 1;
} int main() {
freopen("walk.in","r",stdin);
freopen("walk.out","w",stdout);
read(n); read(C); read(D); read(Td);
while(Td--) {
For(i,1,n) read(b[i]);
if(!solve()) printf("-1");
else For(i,1,n) printf("%lld ",ans[i]);
printf("\n");
}
return 0;
}

  

如约而至(walk)的更多相关文章

  1. 如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源

    1.前言 关于微信内部正在使用的网络层封装库Mars开源的消息,1个多月前就已满天飞(参见<微信Mars:微信内部正在使用的网络层封装库,即将开源>),不过微信团队没有失约,微信Mars ...

  2. python os.walk()

    os.walk()返回三个参数:os.walk(dirpath,dirnames,filenames) for dirpath,dirnames,filenames in os.walk(): 返回d ...

  3. LYDSY模拟赛day1 Walk

    /* 依旧考虑新增 2^20 个点. i 只需要向 i 去掉某一位的 1 的点连边. 这样一来图的边数就被压缩到了 20 · 2^20 + 2n + m,然后 BFS 求出 1 到每个点的最短路即可. ...

  4. How Google TestsSoftware - Crawl, walk, run.

    One of the key ways Google achievesgood results with fewer testers than many companies is that we ra ...

  5. poj[3093]Margaritas On River Walk

    Description One of the more popular activities in San Antonio is to enjoy margaritas in the park alo ...

  6. os.walk()

    os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下. walk()方法语法格式如下: os.walk(top[, topdown=True[, onerror=None[ ...

  7. 精品素材:WALK & RIDE 单页网站模板下载

    今天,很高兴能向大家分享一个响应式的,简约风格的 HTML5 单页网站模板.Walk & Ride 这款单页网站模板是现代风格的网页模板,简洁干净,像素完美,特别适合用于推广移动 APP 应用 ...

  8. 股票投资组合-前进优化方法(Walk forward optimization)

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

  9. Go Walk教程 - 流程控制( switch)

    Go的 switch 非常灵活,表达式不必是常量或整数,执行的过程从上至下,直到找到匹配项,不要break: var score =98 var result string switch score/ ...

随机推荐

  1. c语言排序代码实现

    关于快速,冒泡,选择,插入等排序,本人用代码实现,均能运行成功. 本文除了排序,针对几种swap函数,也进行了说明,通过汇编代码分析,swap1函数的效率最高. #include<iostrea ...

  2. jmeter遇到的问题之Windows读取jtl文件出错

    问题描述 ① 使用linux运行jmeter.jmx文件后生成result.jtl文件 jmeter -n -t /tmp/jmeter.jmx -l /tmp/testresult/result.j ...

  3. Java实现RSA加密

    末尾贴上代码↓↓↓↓↓↓↓↓↓↓↓↓  1.原理 2.实现过程 3. 公式 4.举例  p=13, q=11 ,  (p,q互质)  N=p*q=143 L=(p-1)*(q-1)=120 E=7   ...

  4. order方法属于模型的连贯操作方法之一

    order方法属于模型的连贯操作方法之一,用于对操作的结果排序. 用法如下: $Model->where('status=1')->order('id desc')->limit(5 ...

  5. Django之深入了解视图层

    目录 视图层三板斧 HttpResponse render redirect JsonResponse FBV CBV CBV源码 如何给FBV和CBV加装饰器 视图层三板斧 规定视图函数必须有一个返 ...

  6. springboot导入excel到mysql

    @Controller @RequestMapping(path = "/excel") public class ImportController { @Autowired pr ...

  7. ERROR in xxx.js from UglifyJs

    在打包项目的时候,出现如下的错误: 经过搜索找到原因: 这是因为webpack在打包vue文件时没有成功转换ES6的语法. 解决方案 解决方法很简单,加入babel-preset-es2015插件即可 ...

  8. iOS之CGAffineTransform属性详解和方法使用

    1.CGAffineTransform简介 UIView有个属性transform,是CGAffineTransform类型.可以使其在二维界面做旋转.平移.缩放单独或者组合动画! CGAffineT ...

  9. vue-cli 目录结构详细讲解

    https://juejin.im/post/5c3599386fb9a049db7351a8 vue-cli 目录结构详细讲解 目录 结构预览 ├─build // 保存一些webpack的初始化配 ...

  10. vue表格之@row-click="handleSelect" 与setCurrentRow

    作用:表格行点击触发的事件 注意与@change.@selection-change事件的区分 <el-table ref="RoomTable" @row-click=&q ...