Content

Friday, August 24, 2018

1138 - Trailing Zeroes (III)

Problem Link

বাইসেকশন মেথড ব্যবহার করে খুব সহজেই এর সমাধান করা যাবে। ০ থেকে ১০^৯ পর্যন্ত চেক করলেই আন্সার পাওয়া যায়।

My Solution in C++:

#include<bits/stdc++.h>
using namespace std;

long long check(long long x)
{
    long long n = 0;
    while(x)
    {
        n += x/5;
        x = x/5;
    }

    return n;
}

long long BS(long long x)
{
    long long left = 0, right = 10000000000, mid, ans = 0;
    while(right>=left)
    {
        mid = (left+right) >> 1;
        if(check(mid) >= x)
        {
            if(check(mid)==x)
                ans = mid;
            right = mid - 1;
        }
        else
            left = mid + 1;
    }

    return ans;
}

int main()
{
    int T,t;
    long long Q;
    cin>>T;
    for(t = 1; t <= T; t++)
    {
        cin>>Q;
        if(BS(Q)!=0)
            cout<<"Case "<<t<<": "<<BS(Q)<<endl;
        else
            cout<<"Case "<<t<<": impossible"<<endl;
    }

    return 0;
}

No comments:

Post a Comment