Sunday, August 20, 2017

DCP-180: We Love Eight Devskill Problem Solution & LOgic

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

নাম্বার থিওরি'র খুবই মজার একটা সমস্যা ---- তোমায় একটা  সংখ্যা দেয়া থাকবে , সেই সংখ্যার ভেতরে একটা জায়গায় একটা  A  থাকবে , সেই  A  এর জায়গায় -ক্ষুদ্রতম কোন ডিজিট  বসাইলে ? পুরো সংখ্যাটি ৮ দ্বরা বিভাজ্য হবে ??? আর যদি , কোনোভাবেই ৮ দ্বারা বিভাজ্য না হয় , তাহলে উত্তর প্রিন্ট করতে হবে "NO"

 তো এখন , তোমায়  -  একটা জিনিস জানতে হবে যে , একটি সংখ্যা ৮ দ্বারা তখনই বিভাজ্য হবে , যখন -  শেষ এর তিন ডিজিট মিলে , যে সংখ্যা হবে , সেটা যদি ৮ দ্বারা বিভাজ্য হয় । প্রশ্নে বলাই আছে ,

        ' A ' will be between 1 to ( n - 4 ) index  ,সুতরাং আমরা শেষ এর ৩  ডিজিট  নিয়ে যখন , একটা
সংখ্যা বানাবো - তখন , কোনো ঝামেলাই হবে না । তাহলে , আমরা যখনই শেষের ৩ ডিজিট দিয়ে সংখ্যা বানিয়ে --- টেস্ট করে দেখবো   যে , ৮ দ্বারা বিভাজ্য - তখন , সংখ্যাটি ৮ দ্বারা বিভাজ্য - অরথাত , A এর জায়গায় ০ বসালেই হয়ে যাচ্ছে , আর যদি A একদম প্রথমে থাকে , তাহলে তো ০ বসানো যাবে না , তখন ১ বসিয়ে দিলেই হয়ে যাবে ।   এখানে ,  A এর যায়গায় যে কোনো মান বসালেই কিন্তু হবে , কিন্তু আমাদের বলাই আছে , সবচেয়ে ছোট অংক'টি বসাতে হবে , সেইজন্য ০ ও ১ চুজ করছি আমরা । চলো , কোড দেখে আসি এবার ----

#include<bits/stdc++.h>

using namespace std;


int main()
    {
        string s;

        int x;

        scanf("%d",&x);

        while(x--)

            {

            cin>>s;

            int l=s.length();

            int n=s[l-3]*100+s[l-2]*10+s[l-1];

            if(n%8==0)

                {

                printf("YES\n");

                if(s[0]=='A')printf("1\n");

                else printf("0\n");
            }

            else printf("NO\n");
        }

        return 0;
}

No comments:

Post a Comment