9行代码AC

    科技2022-07-15  109

    励志用少的代码做高效表达


    Problem description

    Given a positive integer n, determine if 1n is an infinite decimal in decimal base. If the answer is yes, print “Yes” in a single line, or print “No” if the answer is no.  

    Input

    The first line contains one positive integer T (1≤T≤100), denoting the number of test cases. For each test case: Input a single line containing a positive integer n (1≤n≤100).  

    Output

    Output T lines each contains a string “Yes” or “No”, denoting the answer to corresponding test case.


    思路与解析

    规律是:10的n次方(n>0)的质因子只有2和5。

    因此, 最开始想到的思路是:看该数的质因子是否只有2和5

    比赛结束后和同学交流:他们的解法是:定义一个大数,如1000000,看是否能整除n


    解法一代码

    #include<bits/stdc++.h> using namespace std; bool f(int n){ if(1==n)return false; else if(0==n%2) return f(n/2); else if(0==n%5) return f(n/5); else return true; } int main(){ int T; cin>>T; while(T--) { int i; cin>>i; cout << (f(i)==false?"No":"Yes") << endl; } return 0; }

    解法二代码

    #include<iostream> using namespace std; int main(){ long long int a=1000000000; int t; cin>>t; while(t--){ int n; cin>>n; cout << (a%n!=0?"Yes":"No") << endl; } return 0; }
    Processed: 0.016, SQL: 9