zoukankan      html  css  js  c++  java
  • 「日常训练」 Finite or not? (CFR483D2C)

    题意(Codeforces 984C)

    给定p,q,b,问pq在进制b下是否是无限小数。

    分析

    这个我一开始做的很挫,激情纯模拟+摸……但是做着做着就能发现不对劲了。比如说,p与能否无限无关(因为只是倍数关系);问题的实质在于q能否被b单纯的表示(这句词是个感性的认识,但是很关键)。
    因此,根据这两个认知,我们能够看出,判断无限与否的重点是b是否拥有q的全部素因子。这个认知跃迁的可能有点大,但是稍微想一下就能明白。
    注意到b与q的数量级,跟个弱智一样的找素数是显然tle的(我之前就是这么干的)。感谢其他人的题解:我们直接不断对b和q除去其gcd,然后看q是否能够除净即可。问题就这么解决了。我还是太菜啦

    代码

    #include <bits/stdc++.h>
    #define MP make_pair
    #define PB push_back
    #define fi first
    #define se second
    #define ZERO(x) memset((x), 0, sizeof(x))
    #define rep(i, a, b) for (int i = (a); i <= (b); ++i)
    #define QUICKIO                  
        ios::sync_with_stdio(false); 
        cin.tie(0);                  
        cout.tie(0);
    using namespace std;
    using ll = long long;
    using ull = unsigned long long;
    ll gcd(ll x,ll y)
    {
        return y==0?x:gcd(y,x%y);
    }
    int main()
    {
        int n; scanf("%d",&n);
        while(n--)
        {
            ll p,q,b; 
            scanf("%lld%lld%lld",&p,&q,&b);
            q/=gcd(p,q);
            while(q!=1&&b!=1)
            {  
              b=gcd(q,b);  
              q/=b;  
            }
            puts(q==1?"Finite":"Infinite");
        }
        return 0;
    }
    如非注明,原创内容遵循GFDLv1.3发布;其中的代码遵循GPLv3发布。
  • 相关阅读:
    Java IO 之 RandomAccessFile 操作文件内容
    Java IO 之 FileFilter与FilenameFilter
    Java IO 之 File 的创建、重命名与遍历
    Java IO 之 System类
    JVM内存区域配置
    切换 显示与隐藏页面元素
    thead tfoot tbody标签的使用
    使用锚点在HTML页面中快速移动
    ASP.NET Core 项目归档
    检测到有潜在危险的 Request.Form 值 转
  • 原文地址:https://www.cnblogs.com/samhx/p/9652073.html
Copyright © 2011-2022 走看看