Finite Decimal

题目
小数部分的位数有限的小数被称为有限小数。例如0.123450.12345是有限小数,1/3,Π是无限小数。
给你一个正整数n,请你判断1/n是否为有限小数,如果是输出"YES",否则输出"NO"(不包含引号)

思路:当n为2的m次方或者是2和5的公倍数时,1/n就是有限小数;否则是无限小数。

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+500;
bool check(int n)   //关键部分,建议反复琢磨
{
    while(n)
    {
        if(n%2==0||n==1)
            n/=2;
        else
            break;
    }
    while(n)
    {
        if(n%5==0||n==1)
            n/=5;
        else
            break;
    }
    if(n==0)
        return true;
    else
        return false;
}

int main()
{
    int T,n;
    cin>>T;
    while(T--)
    {
        cin>>n;
        if(check(n))
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
    }
}

 

posted @ 2020-11-28 01:16  BlackSnow  阅读(74)  评论(0)    收藏  举报