题解 P2350 【[HAOI2012]外星人】
还是本宝宝写题解的一贯习惯 $ :$ 先吐槽吐槽这道题$……$
相信不少同学第一眼一定没有看懂题。(因为我也没看懂)
~~初中~~数学知识:
对于函数 $ f(x)$ 有 $f^{-1}(x)$ 为该函数的反函数。
而当 $ n∈N^{*} $ 时, $f^{n}(x)$ 表示$f(x)$ 的 $n$阶导数。
于是本宝宝看到这题后~~一脸懵逼~~炸了:
喵 $ ?$ $ $ $ !$ 出题人您来告诉我欧拉函数怎么求导$ !$ $ $ $ !$ $ $ $ !$
看一眼题解,才知道$……$
我的数学白学了$?!!$
---
转入正题 $:$
其实,给定 $n$ ,让你求 $x$ 使得
$$\varphi^{x}(N)=1$$
的意思其实是:
每次取 $N=\varphi(N)$ 问至少操作几次后使得 $N=1$
也就是说$:$
$$\varphi(\varphi(…\varphi(N)))=1$$
的最少取 $\varphi$ 的次数即为$ x $
---
好了我们终于理解完题意了。
现在我们可以开始做题了。
这里要引用一句~~名言~~:
如果你是一个在省选考场即将$AK$的人,闲来无事,打了一个 $\varphi(1)-\varphi(1000000)$的表。
然后你惊奇的发现,只有当 $ n$ $=$ $1,2$ 时欧拉函数值是 $0$
然后这玩意要是 $ 1$ 的话,答案显然。
其余的,就根据
$$\varphi(\prod_{i=1}^{m}p_{i}^{q_{i}})=\prod^{m}_{i=1}(p_{i}-1)*p_{i}^{q_{i}-1}$$
所以,每次操作会将上一次操作的答案中的一个因子$2$变为$1$
所以,求操作过程中会产生多少个因子$2$就好了。
---
下面来讨论特例:
$1.$ 对于 $ 2^{n}$ $,$ 我们的操作次数是 $n$ $,$ 显然是这样的。
$2.$ 对于一开始是一个质数,我们第一次操作不会将其中的一个因子$2$变为$1$,所以,这时候 $ans++$
---
好了,上代码:
// luogu-judger-enable-o2
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
#define int long long//个人习惯 int pni[];//欧拉函数值
bool ins[];//标记有没有被筛过
int prime[];//记录质数
int cnt;//质数个数
inline void init(){
pni[]=;
for(int i=;i<=;i++){
if(!ins[i]) prime[++cnt]=i,pni[i]=pni[i-];
for(int j=;j<=cnt&&prime[j]*i<=;j++)
{
ins[prime[j]*i]=true;
pni[prime[j]*i]=pni[prime[j]]+pni[i];
if(!(i%prime[j])) break;
}
}
return ;
}
//以上是欧拉线性筛的模板。 int t;
int n;int ans=;
int p;int q;
signed main()
{
init();
scanf("%lld",&t);
while(t--)
{
scanf("%lld",&n);
for(int i=;i<=n;i++){
scanf("%lld%lld",&p,&q);
if(p==) ans--;
ans+=pni[p]*q;//统计答案
}
printf("%lld\n",ans);
ans=;
}
return ;//程序拜拜。
}
题解 P2350 【[HAOI2012]外星人】的更多相关文章
- BZOJ2749: [HAOI2012]外星人
2749: [HAOI2012]外星人 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 377 Solved: 199[Submit][Status] ...
- 【bzoj2749】[HAOI2012]外星人
2749: [HAOI2012]外星人 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 677 Solved: 360[Submit][Status][ ...
- Bzoj 2749: [HAOI2012]外星人 欧拉函数,数论,线性筛
2749: [HAOI2012]外星人 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 568 Solved: 302[Submit][Status][ ...
- 【BZOJ 2749】 2749: [HAOI2012]外星人 (数论-线性筛?类积性函数)
2749: [HAOI2012]外星人 Description Input Output 输出test行,每行一个整数,表示答案. Sample Input 1 2 2 2 3 1 Sample Ou ...
- [HAOI2012]外星人 题解
人类智慧题. 首先,只有 \(\varphi(1)=\varphi(2)=1\).再考虑题目中给的提示: \[\varphi\left(\prod_{i = 1}^m p_i^{q_i}\right) ...
- BZOJ 2749 [HAOI2012]外星人
题解:对每一个>2的质数分解,最后统计2的个数 注意:如果一开始没有2则ans需+1,因为第一次求phi的时候并没有消耗2 WA了好几遍 #include<iostream> #in ...
- BZOJ2749 HAOI2012外星人(数论)
不妨把求φ抽象成把将每个位置上的一个小球左移一格并分裂的过程,那么即求所有球都被移到1号格子的步数. 显然要达到1必须先到达2.可以发现每次分裂一定会分裂出2号位的球,因为2以外的质数一定是奇数.以及 ...
- [HAOI2012]外星人
题目大意: 告诉你一个数n,求满足φ^x(n)=1的x. 思路: 首先我们可以发现满足φ(n)=1的数只有2,也就是说你得到最终的结果,最后一步肯定是φ(2). 同时,可以发现φ(φ(2^k))=φ( ...
- JZYZOJ1524 [haoi2012]外星人 欧拉函数
http://172.20.6.3/Problem_Show.asp?id=1524 大概可以算一个结论吧,欧拉函数在迭代的时候,每次迭代之后消去一个2,每个非2的质因子迭代一次又(相当于)生成一个2 ...
随机推荐
- SqlServer——临时表
1.表的类型: SqlServer数据库中分为两个表:永久表.临时表:通过表名的前缀区分. 永久表:与物理文件.C# 中的静态类 类似,任何用户均可对其执行操作并且相互影响: 临时表:简单的说就是使用 ...
- jqurey datatable tableTools 自定义button元素 以及按钮定义事件
版本 1.10.4 "dom": 'T<"clear">lfrtip', "tableTools": { //"sSw ...
- spring cloud微服务搭建(一)
martin fowler大神提出微服务的概念后,各种微服务的技术满天飞,现在用的比较多的是spring cloud和阿里的dubbo,由于dubbo 在16年10月份就停止更新了,不过好像前些天又更 ...
- 最长上升子序列(LIS)
最长递增子序列,Longest Increasing Subsequence 下面我们简记为 LIS.排序+LCS算法 以及 DP算法就忽略了,这两个太容易理解了. 假设存在一个序列d[1..9] = ...
- 不要向没权力&能力的人证明自己的能力
[不要向没权力&能力的人证明自己的能力] 不是所有的上级都有足够的权力和能力.一个没权力的Leader,即使你向他证明了自己的能力,你所能获得的也只能是他的邮件表扬的荣誉.对于加薪,他能给的仅 ...
- javascript的加载、解析、执行对浏览器渲染的影响
javascript的加载方式,总得来说是在页面上使用script来声明,以及动态的加载这些方式,而动态的加载,在很多js库中都能够很好的去处 理,从而不至于阻塞其他资源的加载,并与其并行加载下来.这 ...
- 1-5 构建官方example-Windows平台
https://github.com/facebook/react-native https://github.com/facebook/react-native.git https://githu ...
- vim 添加插件
vim 的功能可以通过向它添加plugin得以扩展.所谓的plugin不过是一个vim会自动载入执行的脚本.把一个脚本放到你的plugin目录就可以了,非常容易. plugin基本上分为两类: 全局 ...
- 【摘自大型网站技术架构书】负载均衡时session如何共享
由于负载均衡服务器可能会将请求分发到集群任何一台服务器上,所以保证每次请求能够获得正确的session比单机时复杂. 集群环境下,session管理的主要几种手段 1.session复制 sessio ...
- rest 参数和扩展运算符
rest 参数和扩展运算符 rest 参数的形式为 ...变量名:扩展运算符是三个点 .... rest 参数 function add(...values) { console.log(values ...