思路:

如果p,q不互质,先把q除以p,q的最大公约数。接下来只要b中包含了所有q的质因子就可以了。可以在gcd(q, b) 不等于1的时候不断地用q除以gcd(q, b)。最后如果q等于1,说明Finite,否则Infinite。这样搞复杂度是O(n * log2(1018)),可以有一个简单的小优化:在循环除过程中,gcd(q, b)肯定是单调不增的,当gcd(q, b)不变的时候,一次性把q里面的gcd(q, b)全除尽,省去了大量欧几里得算法求gcd的时间,这样的话时间复杂度大约是O(n * log(1018))。

傻逼出题人卡输入,搞得我以为算法写错了。可能是log不好卡。

实现:

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ios::sync_with_stdio(false);
int n; ll p, q, b;
while (cin >> n)
{
for (int i = ; i < n; i++)
{
cin >> p >> q >> b;
q /= __gcd(p, q);
ll tmp = __gcd(q, b);
while (tmp != )
{
while (q % tmp == ) q /= tmp;
tmp = __gcd(q, b);
}
if (q == ) cout << "Finite" << endl;
else cout << "Infinite" << endl;
}
}
return ;
}

当然也可以直接看是否存在k,使得q能整除bk

实现:

 n = int(input())
ans = ''
while n > 0:
p, q, b = map(int, input().split(' '))
for i in range(6):
b = b * b % q
if b * p % q == 0: ans += 'Finite\n'
else: ans += 'Infinite\n'
n -= 1
print (ans)

CF983A Finite or not?的更多相关文章

  1. CF983A Finite or not?(数学)

    题意:给出分母,分子和进制,要求判断该数是否为有限小数. Solution 表示并不知道怎么判断. 度娘:“一个分数在最简分数的情况下,如果它的分母只含有2和5两个质因数,这个分数就能化成有限小数.” ...

  2. 解题:CF983A Finite or not

    题面 一个$b$进制最简分数是有限循环小数当且仅当其分母没有与$b$不同的质因子,小学数奥内容水过 #include<cstdio> #include<cstring> #in ...

  3. Finite State Machine 是什么?

    状态机(Finite State Machine):状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动       作.完成特定操作的控制中心. 类 ...

  4. Finite State Machine

    Contents [hide]  1 Description 2 Components 3 C# - FSMSystem.cs 4 Example Description This is a Dete ...

  5. pumping lemma for finite regular language?

    some books describe pumping lemma as this: Let L be a regular language. Then there exists an integer ...

  6. codeforces 983A Finite or not?

    题意: 判断一个分数在某一进制下是否为无限小数. 思路: 首先把这个分数约分,然后便是判断. 首先,一个分数是否为无限小数,与分子是无关的,只与分母有关. 然后,再来看看10进制的分数,可化为有限小数 ...

  7. Codeforces Round #483 (Div. 2) C. Finite or not?

    C. Finite or not? time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  8. cf C. Finite or not? 数论

    You are given several queries. Each query consists of three integers pp, qq and bb. You need to answ ...

  9. 【数论】Codeforces Round #483 (Div. 2) [Thanks, Botan Investments and Victor Shaburov!] C. Finite or not?

    题意:给你一个分数,问你在b进制下能否化成有限小数. 条件:p/q假如已是既约分数,那么如果q的质因数分解集合是b的子集,就可以化成有限小数,否则不能. 参见代码:反复从q中除去b和q的公因子部分,并 ...

随机推荐

  1. python selenium实现百度搜索

    1.环境 python2.7+selenium+phantomjs+linux 2.代码 #-*-coding:utf-8 -*- from selenium import webdriver fro ...

  2. hihocoder #1039 : 字符消除 ( 字符串处理类 ) 好久之前做的题目,具体的算法代码中阅读吧

    #1039 : 字符消除 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在玩一个字符消除游戏.给定一个只包含大写字母"ABC"的字符串s,消 ...

  3. 数据结构之 图论---基于邻接矩阵的广度优先搜索遍历(输出bfs遍历序列)

    数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索( ...

  4. 利用JS判断当前来路域名并跳转到指定页面

    某网站绑定了多个域名,默认情况下访问这些域名的时候是指向网站的首页,也就是访问不同域名时看到的页面是一样的,现在需要访问不同域名时显示不同页面. 一般情况下,可以用子站绑定域名的方法来实现,访问不同的 ...

  5. 类、对象(java基础知识六)

    1.Java约定俗成 java约定俗成 1,类名接口名 一个单词首字母大写,多个单词每个单词首字母都大写 2,方法名和变量名 一个单词全部小写,多个单词从第二个单词首字母大写 建议:如果能用英语尽量用 ...

  6. 解决VMware安装Ubuntu的过程中窗口过小无法看到【下一步】按钮的问题

    只要按住ALT键向上拖动窗口

  7. 使用pt-query-digest进行日志分析

    使用pt-query-digest sudo apt install percona-toolkit 也可以到官网 https://www.percona.com/downloads/percona- ...

  8. c语言中为什么左移不分符号数无符号数,而右移分呢??

    因为在C语言标准中,只规定了无符号数的移位操作是采用逻辑移位(即左移.右移都是使用的逻辑左移和逻辑右移).而对于有符号数,其左移操作还是逻辑左移,但右移操作是采用逻辑右移还是算术右移就取决于机器了!( ...

  9. 使用webpack报错

    意思是: 意思是CLI被移动到了一个专门的包 webpack-cli里了.请安装webpack-cli 的除了webpack本身使用cli当用npm时,使用npm install webpack-cl ...

  10. hibernate的基础学习

    工具类: public class H3Util { private static final SessionFactory sessionFactory = buildSessionFactory( ...