zoukankan      html  css  js  c++  java
  • HDU4320 Arcane Numbers 1

    这题比赛的时候纠结了不少...

    对于A进制的一个数,先将其左移N位使得其成为一个整数,然后再将这个整数化为B进制的一个数,然后我们只需要考虑这个数是否能够整除A^N即可(因为我们前面左移了N位),我可以将B进制的这个数先进行左移无限位,那么当有A^N 整除 B^INF 时我们就可以将这个除尽,然后我们再将B右移INF位便可以了。

    这里就把问题转化为了A^N能够整除B^INF进制了,进一步我们可以得到B包含所有A的质因子便为判定条件了。

    代码如下:

    #include <cstdlib>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    
    typedef long long int Int64;
    
    int p[1000005], rec[100005], cnt;
    
    void getprime()
    {
        int k;
        for (int i = 4; i <= 1000000; i += 2) {
            p[i] = 1;
        }
        for (int i = 3; i <= 1000; i += 2) {
            k = 2 * i;
            for (int j = i * i; j <= 1000000; j += k) {
                p[j] = 1;    
            }    
        }
        rec[1] = 2;
        cnt = 1;
        for (int i = 3; i <= 1000000; i += 2) {
            if (!p[i]) {
                rec[++cnt] = i;    
            }    
        }
    }
    
    int main()
    {
        int T, LIM, flag, ca = 0;
        Int64 a, b;
        getprime();
        scanf("%d", &T);
        while (T--) {
            flag = 0;
            scanf("%I64d %I64d", &a, &b);
            LIM = (int)sqrt(double(a));
            for (int i = 1; rec[i] <= LIM; ++i) {
                if (a % rec[i] == 0) {
                    if (b % rec[i] != 0) {
                        flag = 1;
                        break;
                    }
                    while (a % rec[i] == 0) {
                        a /= rec[i];    
                    }
                }
            }
            if (a != 1 && b % a != 0) {
                flag = 1;    
            }
            printf("Case #%d: ", ++ca);
            printf(flag ? "NO\n" : "YES\n");
        }
        return 0;    
    }
  • 相关阅读:
    RabbitMQ笔记-死信队列与延时队列
    设计模式-迭代器模式
    RabbitMQ笔记-Demo(C#)
    RabbitMQ笔记-消息追踪【未完成】
    RabbitMQ笔记-安装&命令
    RabbitMQ笔记-Exchange、Queue、Message详细说明
    MySQL笔记-MVCC【没写】
    MySQL笔记-基础知识
    多线程笔记-基础知识
    在Redis中进行分页排序查询【转】
  • 原文地址:https://www.cnblogs.com/Lyush/p/2617780.html
Copyright © 2011-2022 走看看