暂无链接

整除

题目描述

整除符号为∣|∣,d∣nd|nd∣n 在计算机语言中可被描述为 n%d==0n\%d == 0n%d==0。
现有一算式n∣xm−xn|x^m − xn∣xm−x,给定n,mn,mn,m,求[1,n][1, n][1,n]以内xxx解的个数。
解可能很大,输出取模998244353998244353998244353。

格式
输入格式

其中nnn的给定方式是由ccc个不超过ttt的质数的乘积给出的,ccc和ttt的范围会在数据范围中给出。
第一行一个ididid表示这个数据点的标号。
多组数据,其中第二行一个整数TTT表示数据组数。
对于每一组数据:
第一行两个整数ccc和mmm。
第二行ccc个整数,这些整数都是质数,且两两不同,他们的乘积即为nnn。
由于你可以通过输入求出ttt,输入不再给出。

输出格式

对于每组数据输出一行,表示解的个数。

样例
样例输入

0
1
2 3
2 3

样例输出

6
另有两个样例,见下发文件。

数据范围
测试点 c≤c ≤c≤ t≤t ≤t≤ m≤m ≤m≤ T≤T ≤T≤
111 222 10310^3103 222 505050
222 222 10310^3103 10910^9109 505050
333 222 10210^2102 101010 100001000010000
444 111 10410^4104 222 505050
555 222 10410^4104 222 505050
6,7,86,7,86,7,8 101010 10410^4104 10910^9109 505050
9,109,109,10 505050 10410^4104 10910^9109 505050

其中所有数据点都满足1≤c≤50,1≤t≤104,1≤m≤109,1≤T≤100001 ≤ c ≤ 50,1 ≤ t ≤ 10^4,1 ≤ m ≤ 10^9,1 ≤ T ≤100001≤c≤50,1≤t≤104,1≤m≤109,1≤T≤10000。

题解

发现对于n∣xm−x(n=∏pi)n|x^m-x\ (n=\prod p_i)n∣xm−x (n=∏pi​)这个式子的求解,可以化为对下面这个方程组的求解:
{xm−x≡0mod  p1xm−x≡0mod  p2⋮xm−x≡0mod  pc\left\{ \begin{aligned} &x^m-x\equiv 0\mod p_1\\ &x^m-x\equiv 0\mod p_2\\ &\qquad \vdots \\ &x^m-x\equiv 0\mod p_c\\ \end{aligned} \right. ⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧​​xm−x≡0modp1​xm−x≡0modp2​⋮xm−x≡0modpc​​

可以发现,这是一个同余方程组,那么根据中国剩余定理,整个方程组的解的个数便等于方程组中每个方程的解的个数的乘积,我们可以O(p)O(p)O(p)的遍历[1,p][1,p][1,p]的所有数来求解每个方程,再将解的个数乘起来得到答案,解决单词询问的复杂度为O(∑(pilog⁡pi))O(\sum (p_i\log p_i))O(∑(pi​logpi​))。

然而丧心病狂的出题人并不满足于这样的复杂度,复杂度瓶颈在于快速幂的log⁡p\log plogp,考虑我们实际上在处理函数f(x)=xmmod  pf(x)=x^m\mod pf(x)=xmmodp在[1,p][1,p][1,p]内的值,这个函数是积性的,所以f(x)f(x)f(x)在合数上的值可以线性筛出来,我们只需要在质数做快速幂,因为质数的个数约等于pilog⁡pi\frac{p_i}{\log p_i}logpi​pi​​,刚好与快速幂log⁡pi\log p_ilogpi​抵消,于是最后复杂度降为O(∑pi)O(\sum p_i)O(∑pi​)。

代码
#include<bits/stdc++.h>
using namespace std;
const int M=1e4+5,mod=998244353;
int p[M/3],f[M],sum[M],c,m,T,ans,i,a;
bool vis[M];
int power(int x,int p,int mod){int r=1;for(;p;p>>=1,x=x*x%mod)if(p&1)r=r*x%mod;return r;}
int sie(int n,int m)
{int i=2,ans=2,t;for(p[0]=0;i<n;++i){if(!vis[i])p[++p[0]]=i,f[i]=power(i,m,n);for(int j=1;j<=p[0];++j){if((t=i*p[j])>n)break;vis[t]=1;f[t]=f[i]*f[p[j]]%n;if(i%p[j]==0)break;}ans+=f[i]==i;}return ans;
}
void in(){scanf("%d%d",&c,&m);}
void ac(){for(ans=i=1;i<=c;++i)scanf("%d",&a),ans=1ll*ans*sie(a,m)%mod;printf("%d\n",ans);}
int main(){for(scanf("%*d%d",&T);T--;)in(),ac();}

[2018.10.11 T2] 整除相关推荐

  1. 训练日志 2018.10.11

    这两天一直在弄树形DP,至此除了概率DP还没看,DP 专题基本就告一段落了,这个学期还剩下三个月左右,图论.数据结构.计算几何三个专题一个月一个. 之前学的一些算法还是掌握的不牢,打算先花一个星期左右 ...

  2. 【比赛报告】2018.10.11校赛[8-2情人节欢乐赛] NOIP练习赛卷十二

    比赛时间:2018.10.10 选手:lrllrl 成绩 100+100+100=300 用时:约1h T1 果实计数 显然易得,答案为 b n m o d    k b^n\mod k bnmodk ...

  3. 【2018/10/11测试T3】葫芦

    [题目] 传送门 题目描述: Tom 最喜欢的歌曲就是<葫芦娃>. 一日表演唱歌,他尽了洪荒之力,唱响心中圣歌. 随之,Tom 进入了葫芦世界. 葫芦世界有 nnn 个葫芦,标号为 111 ...

  4. 【2018/10/11】T3 - 0/1分数规划 - 葫芦

    葫芦 描述 Tom 最喜欢的歌曲就是<葫芦娃>. 一日表演唱歌,他尽了洪荒之力,唱响心中圣歌. 随之,Tom 进入了葫芦世界. 葫芦世界有 n 个葫芦,标号为 1~ n.n 个葫芦由 m ...

  5. 【2018/10/11完成】 ubuntu切换国内镜像源,加速apt-get下载速度

    ubuntu切换国内镜像源,加速apt-get下载速度 https://blog.csdn.net/TotoroCyx/article/details/79517202 学习这篇文章,但是他有很多的b ...

  6. 2018年第十届ACM四川省省赛题解(10 / 11)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 2018ACM四川省省赛 题目链接:https://www.oj.swust.edu.cn/probl ...

  7. 泸州职称计算机,2018年11月四川泸州职称计算机考试10月8日开始报名

    [导语]2018年11月四川泸州职称计算机考试报名安排已发布,以下是无忧考网为您介绍了职称计算机考试时间.报名时间等,希望对大家有帮助,更多资料敬请关注无忧考网职称计算机考试频道,我们会为您及时更新相 ...

  8. 【比赛报告】2018.10.15校赛[2015-9-13 NOIP模拟赛 by hzwer] NOIP练习赛卷十四

    比赛时间:2018.10.15 选手:lrllrl 用时:2h 得分:100+10+90=200 最初想法是一个背包问题.首先背包问题的模型肯定是不行的,但是我们可以列出状态转移方程后发现,每个状态决 ...

  9. 七周三次课(1月24日) 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法...

    七周三次课(1月24日) 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法 ====== ...

  10. Interview:算法岗位面试—10.11下午—上海某公司算法岗位(偏数据分析,证券金融行业)技术面试考点之sqlserver语言相关考察点复习

    Interview:算法岗位面试-10.11下午-上海某公司算法岗位(偏数据分析,证券金融行业)技术面试考点之sqlserver语言相关考察点复习 导读:其实,考察的知识点,博主都做过, 还包括sql ...

最新文章

  1. python爬虫入门代码-Python爬虫入门
  2. 用C#实现计算机图形学算法
  3. 在 Java EE 组件中使用 Camel Routes
  4. 22543!Windows 11 新预览版发布
  5. ES6规范 ESLint
  6. 对数据仓库进行数据建模_确定是否可以对您的数据进行建模
  7. Java工作笔记-使用Maven创建Spring Boot并生成war包外部tocamt运行
  8. 对于springmvc的入门学习 2021-04-19
  9. 学校与工作(献于在校大学生及入职不久的工作者)
  10. 五分钟商学院(基础---商业篇)
  11. OpenV2X 开源社区成立,填补 5G 路侧开放基础架构(RSOI)空白
  12. excel最常用的快捷键大全:
  13. 今日财富杂志今日财富杂志社今日财富编辑部2022年第11期目录
  14. Loading plugin Fxp\Composer\AssetPlugin\FxpAssetPlugin PHP Fatal error: Uncaught Error: Call to unde
  15. Linux kernel panic 问题解决方案
  16. 面向政府治理大数据的高性能计算系统
  17. 谈谈 雷达信号处理之脉冲压缩
  18. 2 万字 + 20张图| 细说 Redis 九种数据类型和应用场景
  19. NP-complete
  20. XenDesktop 之powershell 使用

热门文章

  1. 常系数齐次线性微分方程的解法
  2. 计算机老年学校讲义,天津老年大学计算机类教学大纲
  3. Raki的读paper小记:Kernel Continual Learning
  4. 共享usb接口给虚拟机_多网卡虚拟机如何设置?收藏绝对有用
  5. 数据分析好学吗_数据分析篇 | 一个虎扑社区数据分析实战
  6. 对于传统scnece-classfication的分析
  7. iOS开发之HTTP与HTTPS网络请求
  8. win10 uwp 渲染原理 DirectComposition 渲染
  9. Mac 10.12安装Windows远程桌面工具Microsoft Remote Desktop
  10. Python之 多重循环