HDU 4320 Arcane Numbers 1 (质因子分解)

题目传送门

题意:将一个A进制下的有限小数转化为B进制看是否仍为有限小数。

题解:一个A进制的小数可以下次 左移动n位变成A进制整数然后再将其转化为B进制即可 即B^m/A^n要整除,因此A的质因子B必须得全部含有。

#include <iostream>
#include <math.h>
#include <string.h>
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
const int maxn=1000100;
bool isprime[maxn];
int prime[maxn];
using namespace std;
int i,j,k=0;
void pr()
{
    for(i=2;i<=maxn;i++)
    {
        if(!isprime[i])
        {
            for(j=i+i;j<=maxn;j=j+i)
            isprime[j]=true;
            prime[k++]=i;
        }
    }
}
int main()
{
    pr();
    int t,c=1;
    bool flag=true;
    long long a,b;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lld%lld",&a,&b);
        flag=true;
        for(i=0;i<k&&prime[i]<=a;i++)
        {
            if(a%prime[i]==0)
            {
                if(b%prime[i]!=0)
                {
                    flag=false;
                    break;
                }
            }
            while(a%prime[i]==0)
            a/=prime[i];
        }
        if(b%a!=0)
        flag=false;
        if(flag)
        cout<<"Case #"<<c++<<": YES"<<endl;
        else
        cout<<"Case #"<<c++<<": NO"<<endl;
    }
    return 0;
}
时间: 2025-01-31 03:53:52

HDU 4320 Arcane Numbers 1 (质因子分解)的相关文章

数论(GCD) HDOJ 4320 Arcane Numbers 1

题目传送门 题意:有一个A进制的有限小数,问能否转换成B进制的有限小数 分析:0.123在A进制下表示成:1/A + 2/(A^2) + 3 / (A^3),转换成B进制就是不断的乘B直到为0,即(1/A + 2/(A^2) + 3 / (A^3)) * (B^m).那么(B^m) 一定要能整除(A^n),转换一下就是A的质因子B都有,可以用GCD高效计算 收获:数论题做不来可以找找规律,想想会用什么知识求解 代码: /**************************************

HDU 4321 Arcane Numbers 2

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4321 ------------------------------------------------------------------------------- 虽然有更优美的做法 不过数据范围还是可以数位$DP$的 即把模型转化为 在区间内 $mod\ a  = b\ mod\ a$ 的数所含$1$的个数之和 四维的数组分别记录 枚举到第$x$位 是否达到上限 $mod\ a$ 的余数 当前

hdoj 1492 The number of divisors(约数) about Humble Numbers 【数论】【质因子分解 求和】

定理:一个正整数 n 可以用素因子唯一表示为 p1^r1 * p2^r2 * ... pk^rk (其中 pi 为素数) , 那么这个数的因子的个数就是,(r1+1)*(r2+1)*...*(rk+1). 理解:为什么是加1之后再相乘,因为一个数的的因子数至少为1和他自身,但因为r1,r2..可以为0,所以因子的个数为(r1+1)... 拓展一下: 定理1: 一个正整数 n 可以用素因子唯一表示为 p1^r1 * p2^r2 * ... pk^rk (其中 pi 为素数) , 那么这个数的因子的

HDU 2601 An easy problem(暴力枚举/质因子分解)

An easy problem Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7963    Accepted Submission(s): 1920 Problem Description When Teddy was a child , he was always thinking about some simple math p

2012 #3 Arcane Numbers

Arcane Numbers 1 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4320 Description Vance and Shackler like playing games. One day, they are playing a game called "arcane numbers". The ga

hdu 3117 Fibonacci Numbers

点击此处即可传送到hdu 3117 **Fibonacci Numbers** Problem Description The Fibonacci sequence is the sequence of numbers such that every element is equal to the sum of the two previous elements, except for the first two elements f0 and f1 which are respectively

BZOJ 1485: [HNOI2009]有趣的数列 [Catlan数 质因子分解]

1485: [HNOI2009]有趣的数列 Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<…<a2n-1,所有的偶数项满足a2<a4<…<a2n: (3)任意相邻的两项a2i-1与a2i(1≤i≤n)满足奇数项小于偶数项,即:a2i-1<a2i. 现在的任务是:对于给定的n,请求出有多少个不同的长度为2n的有趣的数列.因为最后的答

luogu P2043 质因子分解

题目描述 对N!进行质因子分解. 输入输出格式 输入格式: 输入数据仅有一行包含一个正整数N,N<=10000. 输出格式: 输出数据包含若干行,每行两个正整数p,a,中间用一个空格隔开.表示N!包含a个质因子p,要求按p的值从小到大输出. 输入输出样例 输入样例#1: 10 输出样例#1: 2 8 3 4 5 2 7 1 说明 10!=3628800=(2^8)*(3^4)*(5^2)*7 质因数分解.. #include<cstdio> const int maxn=100006;

hdu 4722 Good Numbers(dp)

public static void main(String[] args) { String a=null; if("aa".equals(a))//这种情形,不出现空指针异常 //if(a.equals("aa"))//出现空指针异常 { System.out.println(true); } else { System.out.println(false); } } 上面的两句不同的比较语句测试,第一句不出现空指针异常,第二句出现. 所以在变量和常量比较的时候