zoukankan      html  css  js  c++  java
  • 第k个与n互质的数(循环)

    传送门

    题目大意就是给出n和k求出第k个与n互素的数(当然不能暴力的啊)因为k很大

    首先要知道这个知识

     例题

    题意:求(1--N!)中M!互质的数的个数,其中M<=N。

    解析:既然M<=N,所以(N!)%(M!)==0,我们可以得到这个结论

     所以这个题就是找到这个解决了

    #pragma GCC optimize(1)
    #pragma GCC optimize(2)
    #pragma GCC optimize(3,"Ofast","inline")
    #include<cstring>
    #include<cstdio>
    #include<iostream>
    #include<queue> 
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    template <typename Tp>
    void read(Tp &x){//read(n);
        x=0;char ch=1;int fh;
        while(ch!='-'&&(ch>'9'||ch<'0')){
            ch=getchar();
        }
        if(ch=='-'){
            fh=-1;ch=getchar();
        }else fh=1;
        while(ch>='0'&&ch<='9'){
            x=(x<<1)+(x<<3)+ch-'0';ch=getchar();
        }
        x*=fh;
    }
    inline char read1()//字符串读入挂
    {
        register char ch=getchar();
        while(ch<'A'||ch>'M')ch=getchar();
        return ch; 
    }
    const int maxn=1e6+100;
    const int mod=1000000007;
    int gcd(int a,int b){
        if(b==0){
            return a;
        }
        return gcd(b,a%b);
    }
    int a[maxn];
    int main(){
        int m,k;
        while(~scanf("%d%d",&m,&k)){
            int cnt=0;
            for(register int i=1;i<=m;i++){
                if(gcd(i,m)==1){
                    a[++cnt]=i;
                }
            }
            if(k%cnt==0){
                printf("%lld
    ",(k/cnt-1)*m+a[cnt]);
            }
            else{
                printf("%lld
    ",(k/cnt)*m+a[k%cnt]);
            }
        }
    } 
  • 相关阅读:
    《javascript设计模式》2接口
    对css类名className的一些操作的函数
    js设计模式方法的链式调用及回调
    js设计模式封装
    ajax的封装
    js设计模式单体(Singleton)
    js设计模式继承
    metasploit
    使用 AsyncCallback 处理异步调用
    log4net 的使用
  • 原文地址:https://www.cnblogs.com/lipu123/p/13946339.html
Copyright © 2011-2022 走看看