codeforces 776E The Holmes Children
codeforces 776E The Holmes Children
题意
定义为满足并且的有序正整数对个数,定义,定义如下:
给出,,求。
题解
首先观察,可以比较容易地推出。推导过程如下:我们先假设一对,使得并且,于是我们可以推出,为和的一个因数,所以也是的一个因数,那么,所以我们可以得知所有不满足条件的正整数对的都不是与互质的,所以满足条件的就是和互质的那些,那么这个就是求欧拉函数了。
然后我们去看,可以退出,因为一个数所有因数的欧拉函数之和等于这个数本身。推导过程如下:假设,那么为所有与的为1的数,那么这些数与的为,所以所有与的为的数都会对作出1的贡献,而由于每个小于的数都与有一个,所以每个数一定都会作出1的贡献,最后答案就是。
知道这两个结论之后,就可以将变成,即求次的欧拉函数,而由于欧拉函数的值求到次左右之后就会变成1,所以我们最多求次欧拉函数,直到的时候,就可以直接输出答案了,总的复杂度为。
Code
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
bool Finish_read;
template<class T>inline void read(T &x){Finish_read=0;x=0;int f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;if(ch==EOF)return;ch=getchar();}while(isdigit(ch))x=x*10+ch-'0',ch=getchar();x*=f;Finish_read=1;}
template<class T>inline void print(T x){if(x/10!=0)print(x/10);putchar(x%10+'0');}
template<class T>inline void writeln(T x){if(x<0)putchar('-');x=abs(x);print(x);putchar('\n');}
template<class T>inline void write(T x){if(x<0)putchar('-');x=abs(x);print(x);}
/*================Header Template==============*/
#define PAUSE printf("Press Enter key to continue..."); fgetc(stdin);
const ll Md=1e9+7;
ll n,k;
/*==================Define Area================*/
ll Euler(ll x) {
ll res=x;
for(ll i=2ll;i*i<=x;i++) {
if(x%i==0) {
res=res-res/i;
while(x%i==0) x/=i;
}
}
if(x>1) res-=res/x;
return res;
}
void Calc() {
ll c=(k+1)/2;
ll res=Euler(n);
c--;
while(c--) {
res=Euler(res);
if(res==1) break;
}
printf("%lld\n",res%Md);
}
int main() {
read(n);read(k);
Calc();
return 0;
}
「我不敢下苦功琢磨自己,怕终于知道自己并非珠玉;然而心中既存着一丝希冀,便又不肯甘心与瓦砾为伍。」
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 使用 Dify + LLM 构建精确任务处理应用