Saturday, July 8, 2017

DCP-216: Math is Fun Devskill Problem Logic & Solution

https://www.devskill.com/CodingProblems/ViewProblem/216
একটা করে সংখ্যা দেয়া থাকবে , কিন্তু সমস্যা হলো প্রত্যেকটা সংখ্যা'র মাঝে একটা করে character
থাকে , যেই character এর জায়গায়  সবচেয়ে কম ,এমন একটা Digit বসাতে হবে যেনো , গোটা সংখ্যা'টাই ৩ দিয়ে বিভাজ্য হয় ..

এখন আমরা ছোটবেলা থেকেই জানি , একটি সংখ্যা ৩ দিয়ে বিভাজ্য হবে কিনা ,সেটা ডিপেন্ড করবে ,সেই সংখ্যাগুলি'র ডিজিট গুলির যোগফল ৩ দিয়ে বিভাজ্য হয় কি না //

তাহলে আমরা ইনপুট নেবো , স্ট্রিং আকারে - যেহেতু সংখ্যা এর মাঝে একটা character থাকবেই ..
এখন ডিজিটগুলো যোগ করে , যোগফল কে ৩ দিয়ে ভাগ করে দেখবো ভাগশেষ কতো হয় ??

ধরো , ইনপুট এ দেয়া আছে 12345T67 , মানে- ডিজিটগুলি'র যোগফল ২৮ | এখন নিজেই চিন্তা করো তো , T  এর জায়গায় কতো বসালে ? সেটা ৩ দিয়ে বিভাজ্য হবে ?? তাহলে ,২ বসালে মোট যোগফল হবে ৩০ .কিভাবে পেলাম ?? ২৮ কে ৩ দিয়ে ভাগ দিয়ে দেখলাম ভাগশেষ ১ \ এর মানে , (৩-১) ২৮ এর সাথে যোগ করলেই ,সেটা ৩ দিয়ে বিভাজ্য হবে ..

কোড'টা দেখলেই বোঝা যাবে

#include<iostream>
#include<cstdio>
#include<string>

using namespace std;

int main()

{
    ios::sync_with_stdio(false);
    int t,k;
    string s;
    cin>>t;
    for(int i=1;i<=t;i++)

    {

        cin>>s;
        int sum=0;
        for(int k=0;k<s.size();k++)
        {
            if(s[k]>='0'&&s[k]<='9'){
            sum=sum+(s[k]-'0');
            }
        }
        int g=(sum%3);
        cout<<"Case "<<i<<": "<<3-g<<endl;
    }
    return 0;
}

No comments:

Post a Comment