luogu P1592 互质

题目描述

输入两个正整数n和k,求与n互质的第k个正整数。

输入输出格式

输入格式:

 

仅一行,为两个正整数n(≤10^6)和k(≤10^8)。

 

输出格式:

 

一个正整数,表示与n互质的第k个正整数。

 

输入输出样例

输入样例#1:
10 5
输出样例#1:
11
#include<cstdio>

int a[1000006];
int gcd(int x,int y)
{
    if(y==0)return x;
    else return gcd(y,x%y);
}
int main()
{
    int n,k,num=0;
    scanf("%d%d",&n,&k);
    a[0]=n-1;
    for(int i=1;i<n;++i)
        if(gcd(i,n)==1)a[++num]=i;
    printf("%d\n",(k-1)/num*n+a[k%num]);
    return 0;
}

 

转载于:https://www.cnblogs.com/sssy/p/7147331.html

### 关于乘法逆元的定义性质 在模 \( p \) 的意义下,如果存在整数 \( x \),使得 \( a \cdot x \equiv 1 \ (\text{mod} \ p) \),则称 \( x \) 是 \( a \) 模 \( p \) 的乘法逆元[^1]。然而,只有当 \( a \) \( p \) 互质时,\( a \) 才可能有模 \( p \) 下的乘法逆元[^3]。 对于 \( a \) \( p \) 不互质的情况,即 \( \gcd(a, p) > 1 \),不存在这样的 \( x \) 能够满足上述条件。这是因为根据扩展欧几里得算法,寻找乘法逆元的过程本质上是在解线性同余方程: \[ a \cdot x + p \cdot y = 1 \] 其中 \( x \) 即为所的乘法逆元。而该方程是否有解取决于 \( \gcd(a, p) \) 是否能够整除常数项 1。显然,当 \( \gcd(a, p) > 1 \) 时,此方程无解,因此无法找到对应的乘法逆元[^2]。 ### 特殊情况下的替代方案 尽管如此,在某些特定场景中仍可采用其他方式来模拟或近似实现类似于“乘法逆元”的功能。以下是几种常见的思路: #### 方法一:通过分数表示代替直接逆元 如果目标是为了完成某种形式上的“除法”,可以通过引入额外变量或者转换成分数的形式间接表达结果。例如给定两个数 \( b \) \( c \),希望计算 \( (b / c) \% p \),即使 \( c \) \( p \) 并非互素关系,也可以改写为如下形式: \[ (b / c) \% p = ((b \% p) \times d^{-1}) \% p, \] 这里 \( d^{-1} \) 表达的是某个适当选取数值作为伪逆元的角色。具体操作需视实际应用需调整[^4]。 #### 方法二:利用中国剩余定理(CRT) 假设已知多个不同的模数及其对应条件下各自的乘法逆元,则可通过CRT组合这些局部信息得到全局解决方案。这种方法特别适用于多组数据联合分析的情形之下。 ```python from sympy import mod_inverse def crt_modular_inverse(a_list, m_list): """ 使用 CRT 计算整体意义上的 '伪' 乘法逆元 """ total_product = 1 result = 0 for mi in m_list: total_product *= mi for ai, mi in zip(a_list, m_list): pi = total_product // mi yi = mod_inverse(pi % mi, mi) result += ai * pi * yi return result % total_product # 示例调用 print(crt_modular_inverse([4], [7])) # 输出应接近原问题中的简单情形 ``` 注意以上代码片段仅为示意用途,并未完全覆盖所有边界状况;真实项目开发前还需进一步验证完善逻辑正确性鲁棒性表现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值