题解 P2350 【[HAOI2012]外星人】

简介: 题目链接 还是本宝宝写题解的一贯习惯 $ :$ 先吐槽吐槽这道题$……$相信不少同学第一眼一定没有看懂题。(因为我也没看懂)~~初中~~数学知识:对于函数 $ f(x)$ 有 $f^{-1}(x)$ 为该函数的反函数。

题目链接

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

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

~~初中~~数学知识:

对于函数 $ 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[100010];//欧拉函数值
bool ins[100010];//标记有没有被筛过
int prime[100010];//记录质数
int cnt;//质数个数
inline void init(){
    pni[1]=1;
    for(int i=2;i<=100000;i++){
        if(!ins[i]) prime[++cnt]=i,pni[i]=pni[i-1];
        for(int j=1;j<=cnt&&prime[j]*i<=100000;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=1;
int p;int q;
signed main()
{
    init();
    scanf("%lld",&t);
    while(t--)
    {
        scanf("%lld",&n);
        for(int i=1;i<=n;i++){
            scanf("%lld%lld",&p,&q);
            if(p==2) ans--;
            ans+=pni[p]*q;//统计答案
        }
        printf("%lld\n",ans);
        ans=1;
    }
    return 0;//程序拜拜。
}

 

相关文章
vep视频翻录为mp4(支持大黄蜂云课堂6.05)
今天教大家怎么翻录大黄蜂vep视频,支持大黄蜂云课堂6.05的最新版。 教程很简单,大家跟着自己尝试下即可。
5503 0
vep视频翻录为mp4(支持大黄蜂云课堂6.05)
|
4月前
|
数据采集 人工智能 搜索推荐
大模型入门指南:从看懂原理到动手微调,一步步打造你的专属AI
本文深入浅出地讲解大模型核心技术:从Token、Embedding到上下文窗口,揭秘AI如何理解语言;通过提示词工程、RAG与微调,教你打造专属智能助手。零基础也能学会,让AI真正为你所用,开启个性化智能时代。
1306 1
|
人工智能 IDE 程序员
GitHub Copilot 免费了!程序员们的福音来了!
《GitHub Copilot 免费了!程序员们的福音来了!》 近日,GitHub 宣布其 AI 编程助手 GitHub Copilot 现在可以免费使用。曾经每月需支付 10 美元订阅费的 Copilot,现在向所有人开放免费版本,这对个人开发者、初学者和小型团队来说是个大好消息。免费版支持 GPT 和 Claude 模型,并提供每月 2000 次代码补全和 50 条聊天消息等核心功能。用户只需注册或登录 GitHub 账户,在 VS Code 中安装扩展并激活免费版即可使用。此外,Visual Studio Code 也完全免费,进一步降低了开发门槛。 除了
13360 7
GitHub Copilot 免费了!程序员们的福音来了!
|
安全 Linux 网络安全
登录神器:Hydra 保姆级教程
登录神器:Hydra 保姆级教程
|
存储 数据可视化 数据管理
Google Earth Engine谷歌地球引擎GEE外部栅格矢量数据导入管理与下载及数据与代码共享
Google Earth Engine谷歌地球引擎GEE外部栅格矢量数据导入管理与下载及数据与代码共享
608 1
|
iOS开发
iOS本地推送通知的基本使用
简单介绍iOS的本地通知推送的基本使用步骤
1675 0
|
机器学习/深度学习 算法 数据挖掘
python k-means聚类算法 物流分配预测实战(超详细,附源码)
python k-means聚类算法 物流分配预测实战(超详细,附源码)
1176 1
python k-means聚类算法 物流分配预测实战(超详细,附源码)
|
算法
【数据结构】什么是图的最短路径?实现最短路径的2种算法?
【数据结构】什么是图的最短路径?实现最短路径的2种算法?
681 0
【数据结构】什么是图的最短路径?实现最短路径的2种算法?
|
Linux 数据库 开发工具
linux文件及文件内容查找命令总结
linux文件及文件内容查找命令总结
745 0