传送门

同样是欧拉函数的基本应用。

$\phi (N)$表示$[1,N]$中,$gcd(i,N)==1$的数的个数,同理,其也能表示$[K \times N+1,(K+1) \times N]$中$gcd(i,N)==1$的数的个数,所有这样就能把区间固定下来,然后对于固定的区间扫一遍就行了。

//POJ 2773
//by Cydiater
//2016.10.8
#include <iostream>
#include <iomanip>
#include <cstring>
#include <queue>
#include <map>
#include <ctime>
#include <cmath>
#include <string>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
using namespace std;
#define ll long long
#define up(i,j,n)        for(ll i=j;i<=n;i++)
#define down(i,j,n)        for(ll i=j;i>=n;i--)
const int MAXN=1e6+5;
const int LIM=1e6;
const int oo=0x3f3f3f3f;
inline ll read(){
    char ch=getchar();ll x=0,f=1;
    while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
ll phi[MAXN],cnt=0,prime[MAXN],N,K,leftt,rightt;
bool vis[MAXN];
namespace solution{
    inline ll gcd(ll a,ll b){return b==0?a:gcd(b,a%b);}
    void pret(){
        phi[1]=1;
        memset(vis,0,sizeof(vis));
        up(i,2,LIM){
            if(!vis[i]){prime[++cnt]=i;phi[i]=i-1;}
            up(j,1,cnt){
                if(prime[j]*i>LIM)break;
                vis[prime[j]*i]=1;
                if(i%prime[j]==0){
                    phi[i*prime[j]]=phi[i]*prime[j];
                    break;
                }else phi[i*prime[j]]=phi[i]*phi[prime[j]];
            }
        }
    }
    void slove(){
        ll PHI=phi[N],tol=0;
        leftt=(K-1)/PHI*N+1;rightt=leftt+N-1;
        K-=(K-1)/PHI*PHI;
        up(i,leftt,rightt){
            if(gcd(i,N)==1)tol++;
            if(tol==K){
                printf("%lld\n",i);
                return;
            }
        }
    }
}
int main(){
    //freopen("input.in","r",stdin);
    using namespace solution;
    pret();
    while(scanf("%lld %lld",&N,&K)!=EOF)slove();
    return 0;
}

最新文章

  1. Java 解决约瑟夫问题
  2. 教你实践ASP.NET Core Authorization
  3. .NET 扩展方法 (二)
  4. PowerDesigner 学习笔记
  5. OC面向对象—多态
  6. MySQL联合查询语法内联、左联、右联、全联
  7. ECstore报表不显示解决
  8. Java中日期时间API小结
  9. 计算球体积,hdu-2002
  10. 核心J2EE模式 - 截取过滤器
  11. [HNOI2007]紧急疏散EVACUATE (湖南2007年省选)
  12. 【Windows 10 应用开发】使用x:Bind标记动态获得计算结果
  13. 背景重复样式background-repeat
  14. webpack 1.x 配合npm scripts管理多站点
  15. Caffe源码理解3:Layer基类与template method设计模式
  16. Myeclipse在debug模式下没加断点程序卡住,start模式下可以正常启动
  17. SSM框架-初学Mybatis框架
  18. JavaScript中的let和const
  19. (贪心部分背包问题)Saving HDU HDU2111
  20. 解决Maven build 慢的问题

热门文章

  1. jQuery学习笔记(四):attr()与prop()的区别
  2. 用c#操作Mongodb(附demo)
  3. 替罪羊树模板(BZOJ1056/1862)
  4. [转]run for a girl
  5. chgrp 简明笔记
  6. Bete冲刺第六阶段
  7. 给li设置float浮动属性之后,无法撑开外层ul的问题。(原址:http://www.cnblogs.com/cielzhao/p/5781462.html)
  8. android 之 surfaceView和普通View的重绘使用
  9. jquery-jsrender使用
  10. 纯css控制-表格表头固定,内容多时滚动内容