[NOI2002] Robot 解题报告(数论+DP)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1408
Description
Input
Output
Sample Input
3 2 1 3 2 5 1
Sample Output
8 6 75
这么长的题面。。。是在告诉我们OI选手必须学好语文吗?
其实题目中的机器人n独立数就是phi(n),新定义phi(1)=0。机器人n的老师就是n的约数,与某个数有共同老师说明二者不互质。
直接在已经质因数分解的数上DP就好
ans1表示到目前质因子政客的独立数之和(即拥有偶数个质因子的数的欧拉函数之和)
ans2表示到目前质因子军人的独立数之和(即拥有奇数个质因子的数的欧拉函数之和)
注意不管是军人还是政客的质因子都是互异的
于是我们得到下面的状态转移方程:
int z=ans1;
ans1=(ans1+ans2*(p-))%mod;//政客
ans2=(ans2+(z+)*(p-))%mod;//军人
因为欧拉函数是积性函数,所以每多加一个质因子p,独立数之和就会乘上p-1;计算ans2时之所以z要加1是因为新加的一个质因数p单独存在也会对答案做出贡献
那么学者呢?根据题意,不是军人,不是政客,当然也不是1号机器人的就是学者。于是学者的独立数之和等于数m的各个约数的独立数之和-1(1号机器人不算)-政客的独立数之和-军人的独立数之和
根据欧拉函数的定理之一,一个正整数的各个约数的欧拉函数值之和等于本身的值
还需要注意2遇到要跳过
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; const int maxn=+;
const int mod=;
int k,m,ans1,ans2,p,e;
inline int read()
{
char ch=getchar();
int s=,f=;
while (!(ch>=''&&ch<='')) {if (ch=='-') f=-;ch=getchar();}
while (ch>=''&&ch<='') {s=(s<<)+(s<<)+ch-'';ch=getchar();}
return s*f;
}
int pow(int x,int e)
{
int r=;
while (e)
{
if (e&) r=r*x%mod;
x=x*x%mod;e>>=;
}
return r;
}
int main()
{
k=read();
m=;
for (int i=;i<=k;i++)
{
p=read();e=read();
m=m*pow(p,e)%mod;
if (p==) continue;
int z=ans1;
ans1=(ans1+ans2*(p-))%mod;//政客
ans2=(ans2+(z+)*(p-))%mod;//军人
}
printf("%d\n%d\n%d\n",ans1,ans2,(m--ans1-ans2+*mod)%mod);
return ;
}
[NOI2002] Robot 解题报告(数论+DP)的更多相关文章
- [BZOJ1026][SCOI2009]windy数 解题报告|数位dp
Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数? 一直 ...
- [codeforces contest 1119 F] Niyaz and Small Degrees 解题报告 (树形DP+堆)
interlinkage: http://codeforces.com/contest/1119/problem/F description: 有一颗$n$个节点的树,每条边有一个边权 对于一个$x$ ...
- [NOI.AC 2018NOIP模拟赛 第三场 ] 染色 解题报告 (DP)
题目链接:http://noi.ac/contest/12/problem/37 题目: 小W收到了一张纸带,纸带上有 n个位置.现在他想把这个纸带染色,他一共有 m 种颜色,每个位置都可以染任意颜色 ...
- [JZOJ4272] [NOIP2015模拟10.28B组] 序章-弗兰德的秘密 解题报告(树形DP)
Description 背景介绍弗兰德,我不知道这个地方对我意味着什么.这里是一切开始的地方.3年前,还是个什么都没见过的少年,来到弗兰德的树下,走进了封闭的密室,扭动的封尘已久机关,在石板上知道了这 ...
- [CQOI2009] 叶子的颜色 解题报告(树形DP)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1304 Description 给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为 ...
- [NOI2002] Savage 解题报告(扩展欧几里得)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1407 Description 克里特岛以野人群居而著称.岛上有排列成环行的M个山洞.这些 ...
- 【bzoj1408】[Noi2002]Robot 数论+dp
题目描述 输入 输出 样例输入 3 2 1 3 2 5 1 样例输出 8 6 75 题解 语文题+数论+dp 花了大段讲述什么叫mu,什么叫phi,只是新定义的mu将2看作有平方因子,新定义的phi( ...
- 【第40套模拟题】【noip2011_mayan】解题报告【map】【数论】【dfs】
目录:1.潜伏者 [map] 2.Hankson的趣味题[数论]3.mayan游戏[dfs] 题目: 1. 潜伏者(spy.pas/c/cpp)[问题描述]R 国和S 国正陷入战火之中,双方都互派间谍 ...
- 【BZOJ1408】[Noi2002]Robot DP+数学
[BZOJ1408][Noi2002]Robot Description Input Output Sample Input 3 2 1 3 2 5 1 Sample Output 8 6 75 HI ...
随机推荐
- Java 获取环境变量
Java 获取环境变量Java 获取环境变量的方式很简单: System.getEnv() 得到所有的环境变量System.getEnv(key) 得到某个环境变量的值 由于某些需要,可能要下载某些 ...
- java去除反复的字符串和移除不想要的字符串
在java开发中碰到了有些字符串是反复的,假设在进行业务处理要所有遍历太对的数据就会反复,所以在进行业务处理前进行一个去重操作. watermark/2/text/aHR0cDovL2Jsb2cuY3 ...
- BCB使用线程删除目录中的图片
BCB新建线程DeleteImgThread类.其会默认继承Thread类,然后在Execute函数中编写代码, void __fastcall DeleteImgThread::Execute() ...
- 字符串转换整数 (atoi) C++实现 java实现 leetcode系列(八)
字符串转换整数 (atoi) java实现 C++实现 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当 ...
- iReport5.6.0使用说明
1,需要安装jdk1.7,因为目前还不支持最新的jdk1.8 2,安装好软件之后,打开安装目录下的etc/ireport.conf文件,配置关联自己的jdk1.7的路径,如下: #jdkhome=&q ...
- 用latex写简历
最近终于逐渐掌握了用Latex写中文简历的问题.首先就是必须基于交大前辈bin yuan的模板进行学习. 如果有了一般论文撰写和Beamer做PPT的经验,不难发现resume的模板也是遵循一套程式的 ...
- JSP学习(一)
1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ----- 会被翻 ...
- centos下nginx配置
转自 http://www.linuxidc.com/Linux/2016-09/134907.htm 安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Wi ...
- BZOJ2225: [Spoj 2371]Another Longest Increasing CDQ分治,3维LIS
Code: #include <cstdio> #include <algorithm> #include <cstring> #define maxn 20000 ...
- vue mint-ui swipe 不显示或显示空白
vue mint-ui swipe 不显示或显示空白? 解决需要在mt-swipe上层元素设置高度 <div> <div> <mt-header title=" ...