• hdu1222&hdu1014 循环群的生成元


    hdu1222

    题目链接:

    http://acm.hdu.edu.cn/showproblem.php?pid=1222

    题目大意:

    大灰狼追小白兔。小白兔可以躲起来的洞绕成一个圈,大灰狼从0这个点出发,每次走m个,问这些洞有木有可以不被狼找到的

    解题思路:

    相当于判断m是不是模n加群的生成元,如果是的话,那么可以到达0到n-1每个洞,不是则不能到达每个洞。

    而判断是否为生成元,直接判断gcd(n, m) = 1,等于1就是生成元。

    关于循环群生成元的知识点这里 -> 传送门

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<set>
     6 #include<cmath>
     7 using namespace std;
     8 const int maxn = 1e4 + 10;
     9 typedef long long ll;
    10 ll T, n, m;
    11 ll gcd(ll a, ll b)
    12 {
    13     return b == 0 ? a : gcd(b, a % b);
    14 }
    15 int main()
    16 {
    17     cin >> T;
    18     while(T--)
    19     {
    20         cin >> n >> m;
    21         if(gcd(n, m) == 1)printf("NO
    ");
    22         else printf("YES
    ");
    23     }
    24     return 0;
    25 }

    hdu1014

    题目链接:

    http://acm.hdu.edu.cn/showproblem.php?pid=1014

    题目大意:

    公式:seed(x+1) = [seed(x) + STEP] % MOD;如果STEP=3,MOD=5,那么seed的值为以3,1,4,2,0为一组循环,即[0,MOD-1],这种称为“Good Choice”;如果STEP=15,MOD=20,那么seed的值为以15,10,5,0为一组循环,不满足[0,MOD-1],所以这种称为“Bad Choice”。

    思路:

    和之前一样,这里代码直接给暴力的

     1 #include<stdio.h>
     2 int a[100010];
     3 int main()
     4 {
     5     int step,mod,i;
     6     while(scanf("%d%d",&step,&mod)!=EOF)
     7     {
     8         a[0]=0;
     9         for(i=1;i<=mod;i++)
    10         {
    11             a[i]=(a[i-1]+step)%mod;
    12             if(a[i]==0)break;
    13         }
    14         if(i==mod)printf("%10d%10d    Good Choice
    
    ",step,mod);
    15         else printf("%10d%10d    Bad Choice
    
    ",step,mod);
    16     }
    17     return 0;
    18 }
  • 相关阅读:
    我的扑克牌
    oc第二课
    oc入门第一课
    2014年1月3日
    iOS Navigation自定义设置Item
    iOS 在一个TableView内使用不同的Cell
    iOS 获取应用当前定位授权状态
    iOS 8显示应用角标
    Xcode 设置Pch文件
    iOS 8设置CLLocation授权
  • 原文地址:https://www.cnblogs.com/fzl194/p/8688746.html
Copyright © 2020-2023  润新知