Sunday, July 16, 2017

DCP-385: Power Of 5 Devskill Problem Solution & Logic

https://www.devskill.com/CodingProblems/ViewProblem/385

খুবই সহজ একটি , প্রোবলেম - তোমাকে একটা সংখ্যা দেয়া থাকবে - তোমায় বলতে হবে - সংখ্যাটিকে
5^X  আকারে , প্রকাশ করা যাবে কি না ?? যেখানে , X একটি  অঋণাত্বক সংখ্যা ।

যেমন , 625 কে 5^4 আকারে , প্রকাশ করা যাবে । সুতরাং উত্তর হবে হ্যা , আর না হলে- না ।

আমরা আগে কোড দেখি , তারপর - বিভিন্ন অংশ নিয়ে আলোচনা করি , সেটাই বেটার হবে ।


#include<bits/stdc++.h>

using namespace std;

typedef unsigned long long llu;

bool pwr(llu n)
{
    bool ans=false;
    llu x=1,i;
    for(i=0;;i++)
    {
        x=x*5;
        if(x>n)
        {
            break;
        }
        else if(x==n)
        {
            ans=true;
            break;
        }
    }
    if(n==1)
    {
        ans=true;
    }
    return ans;
}


int main()
{
    llu N;
    int T;
    cin>>T;
    while(T--)
    {
        cin>>N;
        if(pwr(N))
        {
            cout<<"YES"<<endl;
        }
        else{
            cout<<"NO"<<endl;
        }
    }
    return 0;
}

আমরা , একটি bool pwr ফাংশন ইউস করেছি , যেটা - বলে দিবে , আমাদের উত্তর হ্যা হবে নাকি , না হবে ??

for(i=0;;i++)
    {
        x=x*5;
        if(x>n)
        {
            break;
        }
        else if(x==n)
        {
            ans=true;
            break;
        }
    }

এই লুপটি , এক এক করে -  5^1=5 , 5^2=25 , 5^3=125,  5^4=625  এভাবে , জেনারেট করতে থাকবে ,
যদি , আমদের দেয়া মান এর সমান হয়ে যায় - তখন

else if(x==n)
        {
            ans=true;
            break;
        }

আমাদের ,  ans=true করে দিয়ে - লুপ টা ব্রেইক করে দেয় , আর যদি - আমাদের দেয়া মান এর থেকে ,এই লুপ এর ভেতরে যে মান জেনারেট হয় - তার মান বেশী হয় ,তাহলেও -

if(x>n)
        {
            break;
        }

 if statement ইউস করে - লুপ কে ব্রেইক করে দেয় । আশা করি , কোড'টি - কোডব্লক্সে, রান করালে
আরো ক্লিয়ার হবে  । আর হ্যা, 1 কে কিন্তু, 5^0 হিসেবে - প্রকাশ করা যায় । তাই সেটা , আলাদা করে
লিখে দিয়েছি ।

No comments:

Post a Comment