• 【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取模具有周期性,则根据这个方法我们就可以很快的求出第k个与m互质的数。

    假设小于m的数且与m互质的数有l个,其中第i个是ai,则第k*l+i个与m互质的数是k*m+ai。

      所以,我就for一遍求出所有m以内的与m互质的数,然后根据周期性求解。(感觉有点暴力对吧)

    代码如下,很短的:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cstring>
     4 #include<iostream>
     5 #include<algorithm>
     6 #include<cmath>
     7 using namespace std;
     8 #define Maxn 1000010
     9 #define LL long long
    10 
    11 int p[Maxn],len;
    12 
    13 int gcd(int a,int b)
    14 {
    15     if(b==0) return a;
    16     return gcd(b,a%b);
    17 }
    18 
    19 int main()
    20 {
    21     int m,k;
    22     while(scanf("%d%d",&m,&k)!=EOF)
    23     {
    24         if(m==1) {printf("%d
    ",k);continue;}
    25         len=0;
    26         for(int i=1;i<=m;i++) if(gcd(i,m)==1) p[++len]=i;
    27         int ans;
    28         if(k%len==0) ans=(k/len-1)*m+p[len];
    29         else ans=k/len*m+p[k%len];
    30         printf("%d
    ",ans);
    31     }
    32     return 0;
    33 }
    poj2773

    2016-02-05 16:21:38

  • 相关阅读:
    解决ios下iframe不能滑动
    每天一题之js执行顺序
    async函数的返回值
    小程序自定义Tabbar
    windows10配置vue3项目踩坑记录
    vue2+循环链表解决一个历史趣题
    小程序内协议使用的三种方法
    HDFS的java操作
    HDFS工作原理笔记
    win10已经编译好的hadoop2.6.5
  • 原文地址:https://www.cnblogs.com/Konjakmoyu/p/5183285.html
Copyright © 2020-2023  润新知