正题


大意

因为题目比较gou,所以就直接放题目了

机器人1号可以制造其他的机器人。 第2秒,机器人1号造出了第一个机器人——机器人2号。 第3秒,机器人1号造出了另一个机器人——机器人3号。 之后每一秒,机器人1号都可以造出一个新的机器人。第m秒造出的机器人编号为m。我们可以称它为机器人m号,或者m号机器人。 机器人造出来后,马上开始工作。m号机器人,每m秒会休息一次。比如3号机器人,会在第6,9,12,……秒休息,而其它时间都在工作。 机器人休息时,它的记忆将会被移植到当时出生的机器人的脑中。比如6号机器人出生时,2,3号机器人正在休息,因此,6号机器人会收到第2,3号机器人的记忆副本。我们称第2,3号机器人是6号机器人的老师。 如果两个机器人没有师徒关系,且没有共同的老师,则称这两个机器人的知识是互相独立的。注意:1号机器人与其他所有机器人的知识独立(因为只有1号才会造机器人),它也不是任何机器人的老师。 一个机器人的独立数,是指所有编号比它小且与它知识互相独立的机器人的个数。比如1号机器人的独立数为0,2号机器人的独立数为1(1号机器人与它知识互相独立),6号机器人的独立数为2(1,5号机器人与它知识互相独立,2,3号机器人都是它的老师,而4号机器人与它有共同的老师——2号机器人)。 新造出来的机器人有3种不同的职业。对于编号为m的机器人,如果能把m分解成偶数个不同奇素数的积,则它是政客,例如编号15;否则,如果m本身就是奇素数或者能把m分解成奇数个不同奇素数的积,则它是军人,例如编号 3, 编号165。其它编号的机器人都是学者,例如编号2, 编号6, 编号9。 第m秒诞生的机器人m号,想知道它和它的老师中,所有政客的独立数之和,所有军人的独立数之和,以及所有学者的独立数之和。可机器人m号忙于工作没时间计算,你能够帮助它吗? 为了方便你的计算,Macsy已经帮你做了m的素因子分解。为了输出方便,只要求输出总和除以10000的余数。


解题思路

首先一个机器人m的独立数是φ(m)\varphi(m)φ(m)而老师的数量就是他的因数数量-2,然后把M分解为
p1e1×p2e2×p3e3...×pkekp1^{e1}\times p2^{e2}\times p3^{e3}...\times pk^{ek}p1e1×p2e2×p3e3...×pkek
然后
φ(m)=p1e1×p2e2...×pkek×(1−1p1)×(1−1p2)...×(1−1pk)\varphi(m)=p1^{e1}\times p2^{e2}...\times pk^{ek}\times (1-\frac{1}{p1})\times (1-\frac{1}{p2})...\times (1-\frac{1}{pk})φ(m)=p1e1×p2e2...×pkek×(1−p11​)×(1−p21​)...×(1−pk1​)
之后
φ(m)=(p1−1)p1e1−1×(p2−1)p2e2−1...×(pk−1)pkek−1\varphi(m)=(p1-1)p1^{e1-1}\times (p2-1)p2^{e2-1}...\times (pk-1)pk^{ek-1}φ(m)=(p1−1)p1e1−1×(p2−1)p2e2−1...×(pk−1)pkek−1
然后我们就可以发现政客的独立数就是在M的奇质因数中选择偶数个不同的乘起来的欧拉函数,军人就是选奇数个。然后学者就是M所以的独立数减去政客和军人。
选数我们可以用dp
f[imod2][0]f[i\ mod\ 2][0]f[i mod 2][0]表示在M因子中只包含前i个的政客的欧拉函数
f[imod2][1]f[i\ mod\ 2][1]f[i mod 2][1]表示在M因子中只包含前i个的政客的欧拉函数
然后进行动态转移
f[imod2][0]=f[(i+1)mod2][0]+f[(i+1)mod2][1]∗(p−1)f[i\ mod\ 2][0]=f[(i+1)\ mod\ 2][0]+f[(i+1)\ mod\ 2][1]*(p-1)f[i mod 2][0]=f[(i+1) mod 2][0]+f[(i+1) mod 2][1]∗(p−1)
f[imod2][1]=f[(i+1)mod2][1]+f[(i+1)mod2][0]∗(p−1)f[i\ mod\ 2][1]=f[(i+1)\ mod\ 2][1]+f[(i+1)\ mod\ 2][0]*(p-1)f[i mod 2][1]=f[(i+1) mod 2][1]+f[(i+1) mod 2][0]∗(p−1)
最后计算φ(m)\varphi(m)φ(m)减去最后的政客独立数总和和军人独立数总和


代码

#include<cstdio>
#define mods 10000
using namespace std;
int n,p,e,f[2][2],m=1;
int ksm(int x,int k)//快速幂
{int ans=1;while (k){if (k&1) ans=(ans*x)%mods;x=x*x%mods;k/=2;}return ans;
}
int main()
{scanf("%d",&n);scanf("%d%d",&p,&e);m=m*ksm(p,e)%mods;if (p==2) f[1][0]=1;else{f[0][0]=1;f[1][0]=(f[0][0]+f[0][1]*(p-1)%mods)%mods;f[1][1]=(f[0][1]+f[0][0]*(p-1)%mods)%mods;}//初始化(sro xjqのdalao orz)for (int i=2;i<=n;i++){scanf("%d%d",&p,&e);m=m*ksm(p,e)%mods;f[i&1][0]=(f[~-i&1][0]+f[~-i&1][1]*(p-1)%mods)%mods;f[i&1][1]=(f[~-i&1][1]+f[~-i&1][0]*(p-1)%mods)%mods;//动态转移}f[n&1][0]--;m=((m-1-f[n&1][0]-f[n&1][1])%mods+mods)%mods;//计算学者printf("%d\n%d\n%d",f[n&1][0],f[n&1][1],m);
}

jzoj1161-机器人M号【欧拉函数,dp】相关推荐

  1. LightOJ1298 One Theorem, One Year(DP + 欧拉函数性质)

    题目 Source http://www.lightoj.com/volume_showproblem.php?problem=1298 Description A number is Almost- ...

  2. [CF1603D] Artistic Partition——欧拉函数,线段树优化DP

    [CF1603D] Artistic Partition 题解 问题其实就是要你把 1 ∼ n 1\sim n 1∼n 分成 k k k 段,最小化每一段的 c c c 值的和. 首先我们会想到,如果 ...

  3. 欧拉函数/欧拉函数打表 lightoj1370(java/c++ )

    例题 欧拉函数/素数判定 题目链接 题目 Bamboo Pole-vault是Xzhiland的一项大受欢迎的运动. Phi-shoe大师是他成功的非常受欢迎的教练.他需要为他的学生提供一些竹子,所以 ...

  4. hdu 1286 找新朋友 欧拉函数模版题

    找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Des ...

  5. Codeforces Round #538 (Div. 2) F. Please, another Queries on Array? 线段树 + 欧拉函数

    传送门 文章目录 题意: 思路: 题意: 给你一个序列aaa,你需要实现两种操作: (1)(1)(1) 将[l,r][l,r][l,r]的aia_iai​都乘rrr. (2)(2)(2) 求ϕ(∏i= ...

  6. Educational Codeforces Round 81 (Rated for Div. 2) D. Same GCDs 欧拉函数\莫比乌斯

    传送门 文章目录 题意: 思路: 题意: 给定a,ma,ma,m,求满足gcd(a,m)=gcd(a+x,m)gcd(a,m)=gcd(a+x,m)gcd(a,m)=gcd(a+x,m)的xxx的个数 ...

  7. 欧拉函数 euler

    O - 找新朋友 1.欧拉函数 euler() 在数论,对正整数n,欧拉函数是  少于或等于n的数中与n 互质 的数的数目. 互质:公约数只有 1 的两个整数,称为互质整数.即 最大的公约数也就是 1 ...

  8. HDU 1286 找新朋友 (欧拉函数)

    找新朋友 http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=2&sectionid=1&problemid=8 T ...

  9. HDU1286 找新朋友【欧拉函数】

    找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...

最新文章

  1. 通过 Mysql 官网配置更新本地的mysql源
  2. PERL 语言中的q,qw,qr,qx,qq......符号用法总结
  3. 【Compiling Swift source files】编译很慢;
  4. 递归-计算字符串长度(代码、分析、汇编)
  5. 网络安装centos5.4
  6. 强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!
  7. SAP自学指南:案例公司的管理难题
  8. 自定义添加文字的电脑桌面_将可自定义的免费应用程序启动器添加到Windows桌面...
  9. 阿里云邮件推送使用方法
  10. 较为安全快捷的更改C盘用户文件夹名称的方式!(2022.8.22)windows10和11均可用
  11. Vue组件的抽离和封装
  12. ssh登录一直提示修改密码解决
  13. A1333:具有安全关键应用集成诊断功能的精密、高速、霍尔效应角度传感器 IC
  14. Feature Tools:自动特征工程(翻译)
  15. QQmm无处藏 2.1
  16. 将12小时制改为24小时制
  17. 「营业日志 2020.12.10」Jiangly 的排列数数题
  18. 计算机基础知识问卷,大学计算机基础课程教学内容的调查分析
  19. Python第9章 类
  20. 系统学习iOS动画之六:3D动画

热门文章

  1. python回复邮件_在Python中通过Outlook回复电子邮件
  2. 查看服务器物理内存大小,如何看服务器的物理内存大小
  3. 各高校寒假时间公布_高校放假哪家长?多所高校寒假时间公布!
  4. ueditor如何设置上传图片的高度宽度_怎么设置天猫主图
  5. spyder pyecharts不显示_我的显示器需要定时校色吗?
  6. loadrunner录制事件为0_测试工具LoadRunner常见问题汇总,解决方案整理
  7. easyui 动态设置单元格控件_动态显示最大最小值的折线图
  8. 7-3 凸多边形最优三角剖分 (10 分)(思路+详解+分析题意+动态规划)Come Baby!!!!!!!!!
  9. 「offer来了」保姆级巩固你的js知识体系(4.0w字)
  10. html css图标怎么跟文字并排,html - FA图标和文字环绕的HTML / CSS问题 - SO中文参考 - www.soinside.com...