题目链接

还是本宝宝写题解的一贯习惯 $ :$ 先吐槽吐槽这道题$……$

相信不少同学第一眼一定没有看懂题。(因为我也没看懂)

~~初中~~数学知识:

对于函数 $ 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]外星人】的更多相关文章

  1. BZOJ2749: [HAOI2012]外星人

    2749: [HAOI2012]外星人 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 377  Solved: 199[Submit][Status] ...

  2. 【bzoj2749】[HAOI2012]外星人

    2749: [HAOI2012]外星人 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 677  Solved: 360[Submit][Status][ ...

  3. Bzoj 2749: [HAOI2012]外星人 欧拉函数,数论,线性筛

    2749: [HAOI2012]外星人 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 568  Solved: 302[Submit][Status][ ...

  4. 【BZOJ 2749】 2749: [HAOI2012]外星人 (数论-线性筛?类积性函数)

    2749: [HAOI2012]外星人 Description Input Output 输出test行,每行一个整数,表示答案. Sample Input 1 2 2 2 3 1 Sample Ou ...

  5. [HAOI2012]外星人 题解

    人类智慧题. 首先,只有 \(\varphi(1)=\varphi(2)=1\).再考虑题目中给的提示: \[\varphi\left(\prod_{i = 1}^m p_i^{q_i}\right) ...

  6. BZOJ 2749 [HAOI2012]外星人

    题解:对每一个>2的质数分解,最后统计2的个数 注意:如果一开始没有2则ans需+1,因为第一次求phi的时候并没有消耗2 WA了好几遍 #include<iostream> #in ...

  7. BZOJ2749 HAOI2012外星人(数论)

    不妨把求φ抽象成把将每个位置上的一个小球左移一格并分裂的过程,那么即求所有球都被移到1号格子的步数. 显然要达到1必须先到达2.可以发现每次分裂一定会分裂出2号位的球,因为2以外的质数一定是奇数.以及 ...

  8. [HAOI2012]外星人

    题目大意: 告诉你一个数n,求满足φ^x(n)=1的x. 思路: 首先我们可以发现满足φ(n)=1的数只有2,也就是说你得到最终的结果,最后一步肯定是φ(2). 同时,可以发现φ(φ(2^k))=φ( ...

  9. JZYZOJ1524 [haoi2012]外星人 欧拉函数

    http://172.20.6.3/Problem_Show.asp?id=1524 大概可以算一个结论吧,欧拉函数在迭代的时候,每次迭代之后消去一个2,每个非2的质因子迭代一次又(相当于)生成一个2 ...

随机推荐

  1. 01 asp.net编程笔记

    1.asp.net 获取当前网址url 参考地址:http://www.cnblogs.com/190196539/archive/2011/12/13/2286072.html 设当前页完整地址是: ...

  2. printf 的格式

    1) 类型类型字符用以表示输出数据的类型,其格式符和意义如下表所示: %c  输出单个字符 %s  输出字符串 %u  以十进制形式输出无符号整数 %d  以十进制形式输出带符号整数(正数不输出符号) ...

  3. SpringSecurity3.X权限原理(转)

      这里给出一个简单的安全验证的实现例子,先说一下需求: 1.通过登录页面进行登录 2.用户登录前访问被保护的地址时自动跳转到登录页面 3.用户信息存储在数据表中 4.用户权限信息存在在数据表中 5. ...

  4. Codeforces 1120D (树形DP 或 最小生成树)

    题意看这篇博客:https://blog.csdn.net/dreaming__ldx/article/details/88418543 思路看这篇:https://blog.csdn.net/cor ...

  5. Yii 2 load() 和 save()

    我这里用的数据库是mongo 数据库 为栗子: public function load($data, $formName = null) { $scope = $formName === null ...

  6. php扩展开发1--添加函数

    目标:便携php扩展 要求实现 输出hello word 首先用的是php7.0.3   centos7.1或者centos6.+ 1.1 RPM安装PHP rpm -Uvh https://mirr ...

  7. jQuery基础,选择器

    jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是“write Less, ...

  8. 788. Rotated Digits 旋转数字

    [抄题]: X is a good number if after rotating each digit individually by 180 degrees, we get a valid nu ...

  9. ubuntu 64 14.04 共享文件夹问题

    转自http://blog.csdn.net/gongyuan073/article/details/46604233 原文链接: http://blog.csdn.NET/chinley/artic ...

  10. 内存中DataTable去除重复行

    删除内存中DataTable表的重复行 假设在内存中(不是数据库中)有两个表: 表一:TableA Name Phone 张三 123456 李四 123457 王五 1234568 表二:Table ...