题解 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 ;//程序拜拜。
}
最新文章
- 1Z0-053 争议题目解析501
- iOS改变字母的大小写
- 蚁群算法求解旅行商问题(附c和matlab源代码)
- java jdbc 连接mysql数据库 实现增删改查
- [备份]Emacs配置文件
- Web前端知识技能大汇总
- Hibernate,JPA注解@EmbeddedId
- js问题总结
- Spring入门(3)-Spring命名空间与Bean作用域
- YesFinder - 网页文件管理系统 V2.0
- g++编译cpp文件
- 经典算法题每日演练——第十七题 Dijkstra算法
- 微信JS初始化--微信JS系列文章(一)
- struts2+hibernate+spring配置版框架搭建以及简单测试(方便脑补)
- Java基础语法<;二>; 字符串String
- [bzoj4098] [Usaco2015 Open]Palindromic Paths
- Python列表,字典和字符串操作
- 快速幂 ,快速幂优化,矩形快速幂(java)
- 壁虎书8 Dimensionality Reduction
- 使用guava过期map
热门文章
- 基本的Ceph性能测试工具和方法
- java成神之——集合框架之Maps,Hashtable
- oracle 查询中实现分页
- oracle 11g R2 标准版 64位linux安装
- MAPREDUCE的实战案例
- 微信公众号php从0开发,包括功能(自定义菜单,分享)
- Python基础学习四 列表、元组、字典、集合
- Ubuntu 17.04 允许使用root ssh登录
- 【原】Coursera—Andrew Ng机器学习—编程作业 Programming Exercise 1 线性回归
- 【转】在SharePoint Server 2010中更改&ldquo;我的网站&rdquo;