题目链接

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

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

~~初中~~数学知识:

对于函数 $ 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 ;//程序拜拜。
}

最新文章

  1. 1Z0-053 争议题目解析501
  2. iOS改变字母的大小写
  3. 蚁群算法求解旅行商问题(附c和matlab源代码)
  4. java jdbc 连接mysql数据库 实现增删改查
  5. [备份]Emacs配置文件
  6. Web前端知识技能大汇总
  7. Hibernate,JPA注解@EmbeddedId
  8. js问题总结
  9. Spring入门(3)-Spring命名空间与Bean作用域
  10. YesFinder - 网页文件管理系统 V2.0
  11. g++编译cpp文件
  12. 经典算法题每日演练——第十七题 Dijkstra算法
  13. 微信JS初始化--微信JS系列文章(一)
  14. struts2+hibernate+spring配置版框架搭建以及简单测试(方便脑补)
  15. Java基础语法&lt;二&gt; 字符串String
  16. [bzoj4098] [Usaco2015 Open]Palindromic Paths
  17. Python列表,字典和字符串操作
  18. 快速幂 ,快速幂优化,矩形快速幂(java)
  19. 壁虎书8 Dimensionality Reduction
  20. 使用guava过期map

热门文章

  1. 基本的Ceph性能测试工具和方法
  2. java成神之——集合框架之Maps,Hashtable
  3. oracle 查询中实现分页
  4. oracle 11g R2 标准版 64位linux安装
  5. MAPREDUCE的实战案例
  6. 微信公众号php从0开发,包括功能(自定义菜单,分享)
  7. Python基础学习四 列表、元组、字典、集合
  8. Ubuntu 17.04 允许使用root ssh登录
  9. 【原】Coursera—Andrew Ng机器学习—编程作业 Programming Exercise 1 线性回归
  10. 【转】在SharePoint Server 2010中更改&ldquo;我的网站&rdquo;