以下用等号代替同余

这个式子是$\sum\limits_{j=1}^n(i,j)^{c-d}i^dj^dx_j=b_i$

令$g(n)=\sum\limits_{e|n}\mu\left(\frac ne\right)e^{c-d}$,那么原式变为$\sum\limits_{e|i}g(e)\sum\limits_{\substack{e|j\\1\leq j\leq n}}j^dx_j=\frac{b_i}{i^d}$

令$z_e=\sum\limits_{\substack{e|j\\1\leq j\leq n}}j^dx_j$,先处理原式

$\sum\limits_{e|i}g(e)z_e=\frac{b_i}{i^d}\Leftrightarrow g(i)z_i=\sum\limits_{e|i}\mu\left(\frac ie\right)\frac{b_e}{e^d}$

$g(i)$和上式右边都可以$O(n\log n)$预处理,此时如果存在$i$使$g(i)=0$且右边$\ne0$那么无解,两个都是$0$就多解,随便给$z_i$赋值即可

最后求$x_i$:$x_ii^d=\sum\limits_{\substack{i|j\\1\leq j\leq n}}\mu\left(\frac ji\right)z_j$

正如vfk的题解所说:三个莫比乌斯反演掷地有声==

写快速幂时要注意负指数的处理...

#include<stdio.h>
#include<string.h>
char s[4000000];
int ns;
#define NUM(x) ('0'<=x&&x<='9')
inline int rd(){while(!NUM(s[ns]))ns++;int x=0;while(NUM(s[ns]))x=x*10+s[ns++]-'0';return x;
}
typedef long long ll;
const int mod=998244353,T=100000;
int mul(int a,int b){return(ll)a*b%mod;}
void inc(int&a,int b){(a+=b)%=mod;}
int pow(int a,int b){int s=1;while(b<0)b+=mod-1;while(b){if(b&1)s=mul(s,a);a=mul(a,a);b>>=1;}return s;
}
int pr[T+10],mu[T+10],nd[T+10],d;
bool np[T+10];
void sieve(){int i,j,M=0;mu[1]=1;nd[1]=1;for(i=2;i<=T;i++){if(!np[i]){pr[++M]=i;mu[i]=-1;nd[i]=pow(i,-d);}for(j=1;j<=M&&i*pr[j]<=T;j++){np[i*pr[j]]=1;nd[i*pr[j]]=mul(nd[i],nd[pr[j]]);if(i%pr[j]==0)break;mu[i*pr[j]]=-mu[i];}}
}
int b[T+10],g[T+10],h[T+10],n,c;
int main(){fread(s,1,4000000,stdin);int q,i,j,t;n=rd();c=rd();d=rd();q=rd();sieve();for(i=1;i<=n;i++){t=pow(i,c-d);for(j=1;i*j<=n;j++)inc(g[i*j],mu[j]*t);}for(i=1;i<=n;i++)g[i]=pow(g[i],mod-2);while(q--){for(i=1;i<=n;i++)b[i]=mul(rd(),nd[i]);memset(h,0,sizeof(h));for(i=1;i<=n;i++){t=b[i];for(j=1;i*j<=n;j++){if(mu[j])inc(h[i*j],mu[j]*t);}}for(i=1;i<=n;i++){if(g[i]==0&&h[i]!=0){i=-1;break;}h[i]=mul(h[i],g[i]);}if(i==-1){puts("-1");continue;}for(i=1;i<=n;i++){t=0;for(j=1;i*j<=n;j++)inc(t,mu[j]*h[i*j]);t=mul(nd[i],t);inc(t,mod);printf("%d ",t);}putchar('\n');}
}

转载于:https://www.cnblogs.com/jefflyy/p/9607956.html

[UOJ62]怎样跑得更快相关推荐

  1. 百度吴甜宣布百度AI加速器第二期开营,要让创业者跑得更快

    历经近4个月,从上千个项目中脱颖而出的百度AI加速器首批"AI新星"顺利结业.3月23日,百度AI加速器DEMO DAY在北京举行,来自金融.农业.零售.医疗.互联网等多个行业的1 ...

  2. 如何写出让 CPU 跑得更快的代码?

    作者 | 小林coding 来源 | 小林coding(ID:CodingLin) 前言 代码都是由 CPU 跑起来的,我们代码写的好与坏就决定了 CPU 的执行效率,特别是在编写计算密集型的程序,更 ...

  3. 敏捷是如何使你跑得更快?

    对于为何采用敏捷软件开发这个问题,企业经常提到的原因之一是希望能够更快地交付软件.研究表明敏捷项目能够进行地更快,例如<敏捷项目的成功证据>一文中描述的哥伦布市敏捷工作效率基准项目. \u ...

  4. [Linux主机] 优化你的php-fpm(php5.3+)让你的网站跑得更快

    2019独角兽企业重金招聘Python工程师标准>>> [Linux主机]优化你的php-fpm(php5.3+)让你的网站跑得更快 从php5.3以后php自带了php-fpm不是 ...

  5. 面试官:如何写出让 CPU 跑得更快的代码?

    前言 代码都是由 CPU 跑起来的,我们代码写的好与坏就决定了 CPU 的执行效率,特别是在编写计算密集型的程序,更要注重 CPU 的执行效率,否则将会大大影响系统性能. CPU 内部嵌入了 CPU ...

  6. 博文视点大讲堂36期——让Oracle跑得更快 成功举办

    博文视点大讲堂36期--让Oracle跑得更快 成功举办 电子工业出版社博文视点公司于2010年9月日在西单图书大厦成功举办"博文视点大讲堂36期--让Oracle跑得更快"讲座. ...

  7. 让oracle跑得更快——oracle 10g性能分析与优化思路,[让Oracle跑得更快.Oracle.10g性能分析与优化思路]概要1.doc...

    [让Oracle跑得更快.Oracle.10g性能分析与优化思路]概要1 在线事务(OLTP) 在线分析(OLAP) 在Oracle数据库中,凡是分配了存储空间的,都称为段,所有段并不一定指的是表,也 ...

  8. python移动图形工作站_让Python跑得更快

    原标题:让Python跑得更快 点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 Tips 参与文末话题讨论,即有机会获得异步图书一本. Python很容易学.你之所以阅读本 ...

  9. LabVIEW用了多线程,程序是不是会跑的更快些

    LabVIEW用了多线程,程序是不是会跑的更快些 这个取决于具体的应用程序.如果应用程序中的任务顺序执行,不会看到任何改善.比方说,程序打开文件,从文件中读取数据,然后关闭文件.多线程并不能使的应用程 ...

最新文章

  1. 逃课上网吧编程、玩摇滚的另类学生,逆袭成长为独角兽公司的 CTO
  2. ESP8266编译脚本之五
  3. 详解虚函数的实现过程之虚基类(4)
  4. 数据泵导入远程oracle,数据泵导入导出远程数据库数据
  5. CM: webservice 元数据在word template中的存储
  6. 9-18 学习如何使用Python包的管理
  7. python语言编写一个生成九宫格图片的代码_python简单实现9宫格图片实例
  8. MIT机器人闭上眼睛,靠触觉也爬得上凶险的楼梯 | 施工未完成
  9. javascript执行机制
  10. robocode_Robocode大师的秘密,多态敌人缓存
  11. Mysql workbench画ER图
  12. 利用python统计excel中的数据
  13. 【3D打印机】原来配置Marlin2.0这么简单,别说我没告诉你。
  14. bootstrapCDN地址
  15. 名风新浪博客评论软件-自动评论推广
  16. 升级打怪课堂的题库更新了!
  17. html a3纸大小,a0-a3纸的尺寸具体大小介绍【图文】
  18. DM数据库开启归档模式的三种方式
  19. 【转】Google Earth究竟是怎样工作的
  20. 如何高效阅读一本纸质书

热门文章

  1. shell脚本详解(八)——一键部署自动化装机(PXE无人值守)
  2. BGP小实验——选路不困难,只要有方法
  3. c语言程序设计编程解读,C语言程序设计第三次实验报告解读
  4. python笔记之序列(dict的基本使用和常用操作)
  5. jsp连接mysql数据库代码_JSP连接MySQL数据库代码
  6. 怎么复制远程服务器上的文件夹,Linux系统复制文件/文件夹到远程服务器
  7. so调用so 编译 android,android-5分钟入门-CMake方式使用JNI(.so调用篇)
  8. web项目怎么连接云服务器,web项目怎么连接云服务器
  9. delphi 多个线程 多个进度条_多线程有哪些优点?- Python每日3题(多线程专题)
  10. 计算矢量面积_航天器轨道参数计算推导