传送门

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

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

  1. //POJ 2773
  2. //by Cydiater
  3. //2016.10.8
  4. #include <iostream>
  5. #include <iomanip>
  6. #include <cstring>
  7. #include <queue>
  8. #include <map>
  9. #include <ctime>
  10. #include <cmath>
  11. #include <string>
  12. #include <algorithm>
  13. #include <cstdio>
  14. #include <cstdlib>
  15. using namespace std;
  16. #define ll long long
  17. #define up(i,j,n) for(ll i=j;i<=n;i++)
  18. #define down(i,j,n) for(ll i=j;i>=n;i--)
  19. const int MAXN=1e6+5;
  20. const int LIM=1e6;
  21. const int oo=0x3f3f3f3f;
  22. inline ll read(){
  23. char ch=getchar();ll x=0,f=1;
  24. while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
  25. while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
  26. return x*f;
  27. }
  28. ll phi[MAXN],cnt=0,prime[MAXN],N,K,leftt,rightt;
  29. bool vis[MAXN];
  30. namespace solution{
  31. inline ll gcd(ll a,ll b){return b==0?a:gcd(b,a%b);}
  32. void pret(){
  33. phi[1]=1;
  34. memset(vis,0,sizeof(vis));
  35. up(i,2,LIM){
  36. if(!vis[i]){prime[++cnt]=i;phi[i]=i-1;}
  37. up(j,1,cnt){
  38. if(prime[j]*i>LIM)break;
  39. vis[prime[j]*i]=1;
  40. if(i%prime[j]==0){
  41. phi[i*prime[j]]=phi[i]*prime[j];
  42. break;
  43. }else phi[i*prime[j]]=phi[i]*phi[prime[j]];
  44. }
  45. }
  46. }
  47. void slove(){
  48. ll PHI=phi[N],tol=0;
  49. leftt=(K-1)/PHI*N+1;rightt=leftt+N-1;
  50. K-=(K-1)/PHI*PHI;
  51. up(i,leftt,rightt){
  52. if(gcd(i,N)==1)tol++;
  53. if(tol==K){
  54. printf("%lld\n",i);
  55. return;
  56. }
  57. }
  58. }
  59. }
  60. int main(){
  61. //freopen("input.in","r",stdin);
  62. using namespace solution;
  63. pret();
  64. while(scanf("%lld %lld",&N,&K)!=EOF)slove();
  65. return 0;
  66. }

[POJ2773]:Happy 2006的更多相关文章

  1. [暑假集训--数论]poj2773 Happy 2006

    Two positive integers are said to be relatively prime to each other if the Great Common Divisor (GCD ...

  2. POJ-2773 Happy 2006,暴力2700ms+水过!

                                                         Happy 2006 这个题很可能会超时的,但我几乎暴力的方法2700ms+过了,可能是后台水 ...

  3. POJ2773 - Happy 2006(欧拉函数)

    题目大意 给定两个数m,k,要求你求出第k个和m互质的数 题解 我们需要知道一个等式,gcd(a,b)=gcd(a+t*b,b) 证明如下:gcd(a+t*b,b)=gcd(b,(a+t*b)%b)= ...

  4. POJ2773 Happy 2006【容斥原理】

    题目链接: http://poj.org/problem?id=2773 题目大意: 给你两个整数N和K.找到第k个与N互素的数(互素的数从小到大排列).当中 (1 <= m <= 100 ...

  5. 【poj2773】 Happy 2006

    http://poj.org/problem?id=2773 (题目链接) 题意 给出两个数m,k,要求求出从1开始与m互质的第k个数. Solution 数据范围很大,直接模拟显然是不行的,我们需要 ...

  6. 【POJ2773】Happy 2006 欧几里德

    题目描述: 分析: 根据欧几里德,我们有gcd(b×t+a,b)=gcd(a,b) 则如果a与b互质,则b×t+a与b也一定互质,如果a与b不互质,则b×t+a与b也一定不互质. 所以与m互质的数对m ...

  7. Happy 2006 poj2773

    Happy 2006 Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 9049   Accepted: 3031 Descri ...

  8. BZOJ 2006: [NOI2010]超级钢琴

    2006: [NOI2010]超级钢琴 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2613  Solved: 1297[Submit][Statu ...

  9. #Deep Learning回顾#之2006年的Science Paper

    大家都清楚神经网络在上个世纪七八十年代是着实火过一回的,尤其是后向传播BP算法出来之后,但90年代后被SVM之类抢了风头,再后来大家更熟悉的是SVM.AdaBoost.随机森林.GBDT.LR.FTR ...

随机推荐

  1. 封装好的socket,拿去用

    年终有空咯,分享一下自己封装的socket类库. 由于公司写的socket代码非常醉人,我不能忍,所以自己封装了一下方便大家使用,现在有空也分享给园友用用看,现在还存在一定的问题,等下我列出来,希望大 ...

  2. PC互联网和移动互联网的本质差别

    网一代,我们先称为PC互联网,这大约可以从2010年作为分界,然后就是基于手机,及可穿戴的移动互联网. 在PC时代,软件都很庞大复杂,甚至客端端和网页混合,比如常见的桌面软件,Office及Photo ...

  3. C语言strcat()函数:连接字符串

    头文件:#include <string.h> strcat() 函数用来连接字符串,其原型为:    char *strcat(char *dest, const char *src); ...

  4. LXC的介绍

    LXC又名Linux container,是一种虚拟化的解决方案,这种是内核级的虚拟化.(主流的解决方案Xen ,KVM, LXC) 介绍 通过namespace进行资源的隔离,Gust1下的进程与G ...

  5. 1103简单SQL 行转列思路

    转自http://www.cnblogs.com/lhj588/p/3315876.html -- 经典行列转化DROP TABLE IF EXISTS TabName;CREATE TABLE Ta ...

  6. 检测当前网段哪些IP是在线的

    [root@storage ~]# cat ping.ip #!/bin/bashfor ip in `seq 1 255`    do    {      ping -c 2 192.168.220 ...

  7. 提供RESTful服务

    RESTful广泛运用于互联网服务,而在企业应用中,大部分场景仍然是RPC服务,这是由于企业应用的业务复杂性造成的.但是基于SOAP的RPC服务也存在很多的弊端,比如服务异步处理比较麻烦,大部分RPC ...

  8. java.lang.Exception: No runnable methods

    java.lang.Exception: No runnable methods at org.junit.runners.BlockJUnit4ClassRunner.validateInstanc ...

  9. webuploader跨域上传

    浏览器在跨域请求前会发个options请求来验证是否跨域,所以后端再处理这个options请求时,要告诉浏览器一些信息. 也就是个header信息 header("Access-Contro ...

  10. OneThink学习笔记02----数据字典(即OneThink项目数据库里的表及其字段)

    action 字段 类型 注释 id int(11) unsigned 自增主键 name char(30) 行为唯一标识 title char(80) 行为说明 remark char(140) 行 ...