首页 > 其他分享 >timus 1673 & phi & 反phi

timus 1673 & phi & 反phi

时间:2024-06-07 16:44:37浏览次数:18  
标签:phi prod frac int varphi cdots ans 1673 timus

题意:

给定 \(k\),求一个最小的 \(n\) 使得有恰好 \(k\) 个 \(i\in [1,n]\),满足对于所有 \(j\in [1,n]\),都有 \(x\) 满足 \(ix=j\mod n\) 并且 \(ix\le n^2\)​。里面所有数都是正整数。

Sol:

我们考虑 \(\gcd(x,n)>1\) 的 \(x\)。因为 \(\gcd(x,n)>1\),所以 \(\operatorname{lcm}(x,n)<n^2\),设为 \(xt\)。因为 \(t<n\),所以 \(x\) 的 \(1\sim t\) 倍最多不会有超过 \(t\) 个不同的剩余类。但是 \(t+1\) 倍的 \(x\) 又和 \(1\) 倍的 \(x\) 本质相同,构成了循环,所以\(\gcd(x,n)>1\) 的 \(x\) 不行。因此 \(\gcd(x,n)=1\) 可以。而我们知道 \(\sum_{x=1}^n [\gcd(x,n)=1]=k\),所以这个题转化成求 \(\varphi(n)=k\) 的最小 \(n\)。

插播:\(\varphi(n)\) 是什么?

欧拉函数 \(\varphi(n)\) 为 \(1\sim n\) 种和 \(n\) 互素的元素个数。\(\varphi(n)\)​ 是积性函数。

\(\varphi(n)\) 的显性公式:\(\varphi(p)=p-1,\varphi(p^k)=p^k-p^{k-1}\)。

\[\begin{aligned} \varphi(n)=&\varphi(p_1^{a_1})\cdots \varphi(p_t^{a_t})\\=&(p_1^{a_1}-p_1^{a_1-1})\cdots (p_t^{a_t}-p_{t}^{a_t-1})\\=&p_1^{a_1}(1-\frac{1}{p_1})\cdots p_t^{a_t}(1-\frac{1}{p_t})\\=&n(1-\frac{1}{p_1})\cdots (1-\frac{1}{p_t})\\=&n\prod(1-\frac{1}{p}) \end{aligned} \]

因此

\[\begin{aligned} \varphi(n)=&n\prod(1-\frac{1}{p})\\ =&p_1^{a_1}\cdots p_t^{a_t}\prod_i \frac{p_i-1}{p_i}\\ =&p_1^{a_1-1}\cdots p_t^{a_t-1}\prod_i (p_i-1)\\ =&\prod_i p_i^{a_i-1}(p_i-1) \end{aligned} \]

所以因为 \(\varphi(n)=k\),所以 \(p_i-1\mid k\)。

我们可以预处理 \(\sqrt{k}\) 以内的质数,\(\sqrt{k}\) 以外的指数单独判。每一次看要不要加上一个质数,前提条件是 \(p_i-1\mid k\)。

#include <bits/stdc++.h>

using namespace std;

using ll = long long;

const int N = 1e5+5;
const int M = 50000;
const ll inf = 2e12;

int lim,pr[N],vis[N],cnt;

void init(){
	for (int i=2; i<=M; i++){
		if (!vis[i]){
			pr[++cnt]=i;
		}
		for (int j=1; j<=cnt && i*pr[j]<=M; j++){
			vis[i*pr[j]]=1;
			if (i%pr[j]==0){
				break;
			}
		}
	}
}

bool isp(ll x){
	for (ll i=2; i*i<=x; i++){
		if (x%i==0){
			return 0;
		}
	}
	return 1;
}

ll ans=inf;

void dfs(int p,int r,ll c){
	if (c>=ans){
		return;
	}
	if (r==1){
		ans=c;
		return;
	}
	if (r>lim && isp(r+1)){
		ans=min(ans,c*(r+1));
	}
	for (int i=p+1; pr[i]-1<=min(lim,r); i++){
		if (r%(pr[i]-1)==0){
			int nr=r/(pr[i]-1);
			ll nc=c*pr[i];
			dfs(i,nr,nc);
			while (nr%pr[i]==0){
				nr/=pr[i];
				nc*=pr[i];
				dfs(i,nr,nc);
			}
		}
	}
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);

	init();
	int k;
	cin>>k;
	lim=sqrt(k+1);
	dfs(0,k,1);
	if (ans==inf){
		cout<<0<<"\n";
	}
	else{
		cout<<ans<<"\n";
	}
	return 0;
}

其实我也不知道复杂度是啥。但是在 \(k\le 2\cdot 10^9\) 跑过了。

标签:phi,prod,frac,int,varphi,cdots,ans,1673,timus
From: https://www.cnblogs.com/SFlyer/p/18237461

相关文章

  • CorelDRAW 全称“CorelDRAW Graphics Suite
    箭头在各种场景中被广泛使用。在设计中,设计师可以根据设计的目的和受众,巧妙地运用箭头来传达信息、创造视觉效果或引导观者的注意力。在CDR软件中可以为设计添加箭头,那具体该怎么做呢?下面由我带大家一起来了解CoreIDRAW箭头形状工具在哪里,CoreIDRAW箭头形状怎么改成曲线的相关......
  • 本地如何通过Ollama部署llama3、phi3等本地大模型?
    一、ollama是什么?在本地启动并运行大型语言模型。运行Llama3,Mistral,Gemma,CodeLlama和其他模型。自定义并创建您自己的。优势如下:•快速下载+容器自动运行大模型,现在下载,马上上手。•本地利用cpu运行大模型,本地安全可靠。•ollama命令,管理大模型相对方......
  • delphi property中default的含义
    delphiproperty中default的含义首先看个案例TPerson=classpublishedpropertyAge:IntegerreadFAgewriteSetAgedefault20;end;我们创建一个TPerson类给其一个属性,然后使用了default20关键字,按照我们的理解应该是这个age属性的默认值就是20;其实这个d......
  • delphi 实现登陆窗体 与 主窗体的过程,启动窗口
    登录窗体:typeTfrmLogin=class(TForm)btn1:TButton;procedurebtn1Click(Sender:TObject);private{Privatedeclarations}public{Publicdeclarations}end;varfrmLogin:TfrmLogin;implementation{$R*.dfm}procedureTfrm......
  • BootStrap入门到实战:BootStrap组件(一)- Glyphicons字体图标、下拉菜单、按钮组、按钮式
    目录 一、Glyphicons字体图标二、下拉菜单1.基本实例1.1示例1.2用jQuery实现1.3菜单向上弹出2.对齐3.标题4.分割线5.禁用的菜单项三、按钮组1.基本实例2.按钮工具栏3.尺寸4.嵌套5.垂直排列6.两端对齐排列的按钮组四、按钮式下拉菜单1.单按......
  • 发布 CapstoneDelphi 项目(反汇编引擎 SDK)
    lsuper发布的,以下为他的发布内容:最近遇到一个需要反编译PE32/32+的需求,搜了下GH发现全能的Capstone,不过上面Delphi的实现都比较古老(如Capstone4Delphi)且对不同平台支持的不好,遂借五一基于官方稳定版4.0.2手搓了一个,顺带练练手交叉编译等;经过陆续完善,补全官方所有的tes......
  • linux 系统上图形生成错误 java.lang.NoClassDefFoundError: Could not initialize cl
    错误信息:02-Jun-202409:11:09.421SEVERE[Thread-32]org.apache.catalina.core.StandardWrapperValve.invokeServlet.service()forservlet[springDispatcherServlet]incontextwithpath[]threwexception[Handlerdispatchfailed;nestedexceptionisjava.lang.......
  • delphi Image32 之 快速入门
     官方快速入门,加上了一些注解[从WORD粘贴后失去了样式]TImage32类是关键。TImage32 对象包含单个图像,所有图像操作都作用于此对象。usesImg32; //引用单元...img:=TImage32.Create; //创建TImage32对象//执行一些其它操作img.Free; //用完了要释放图像存储......
  • delphi 图形图像处理 Image32
    delpher 越来越少了,但不能掩盖它的优秀,很外前看到了Image32,但发现用它的人很少,这段时间整理了它的资料,重新组合了一个DEMO,也可以说是个小工具,分享出来。----下面的内容不能直接从WORD中复制过来,只能一点点粘贴,Image32 关于Image32说明文档是这样描述的:  用Delphi......
  • Delphi 2010 新增功能之: IOUtils 单元(1): 初识 TDirectory.GetFiles
    用IOUtils单元下的TDirectory.GetFiles获取文件列表太方便了;下面的例子只是TDirectory.GetFiles的典型应用...unitUnit1;interfaceuses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms, Dialogs,StdCtrls;type TForm1=......