Thursday, August 24, 2017

Uva 10550 Combination Lock Problem Solution & Logic

 
একটা কম্বিনেশন লক । এটা খোলার নিয়ম কিরকম ??? আগে দেখে আসি , চলো
ধরো মনে করো , আছে -------   "15-25-8"

১) প্রথমে ,ইনিশিয়াল অবস্থা থেকে  তোমায় ঘড়ির কাটার দিকে , ২ বার ফুল  ঘুরিয়ে যেখানে আছে  - সেখানে আনতে হবে ।।

২) তারপর সেইখান থেকে ,  ঘুরিয়ে --- 15 অবদি নিতে হবে ।।

৩)15 অবদি নিয়ে এসেই , সেই যায়গা থেকে ফুল ১ বার ঘড়ির কাটার বিপরীত দিকে ঘুরিয়ে আবার 15 তে এনে থামতে হবে  ।।

৪)এখন দ্বিতীয় সংখ্যা  25 অবদি আনার জন্য , ঘড়ির কাটার বিপরীত দিকে ঘুরিয়ে সেই  25 অবদি যাবো .।

৫) এখন এই 25 থেকে ঘড়ির কাটার দিকে  ঘুরিয়ে তিন নাম্বার সংখ্যা 8 অবদি এনে , পুল করলেই লক'টি খুলে যাবে ।।

এখন আসো , বিশ্লেষণ করি - এখানে  0 থেকে   39  অবদি , মোট ঘর আছে কয়টা ?? অবশ্যই মোট 40  টা ।এখন , এই ফুল  40 টা ঘর ঘুরে আসলে একটা বৃত্ত হয়ে যায় তাই না ??? মানে  360 ডিগ্রী কোণ উতপন্ন হয় .।।

তাহলে তালাটি খোলার , ১ এবং ৩ নং পয়েন্ট অনুযায়ী কি হয় ??? ১ নাম্বার পয়েন্টে বলেছি , ২ বার ফুল ঘুরাতে হবে ও ৩ নম্বরে বলেছি যে - ১ বার ফুল ঘুরাতে হবে ,মোট ৩ বার - তাই না ???

 তাহলে , সব তালা খোলার ক্ষেত্রেই এই  ৩ বার ফুল ঘুরাতে হবে , তাই না  ???    সুতরাং -- এই তিন বারের জন্য আমাদের যত ডিগ্রী কোণ উতপন্ন হবে , সেটা হলো - 360 X 3 = 1080  ডিগ্রী ।।

এখন আসি , আরো গভীরে --    একটু ঐকিক নিয়মে ফিরে যাই - চলো ,

          40  টা ঘর ঘুরলে হয়       360   ডিগ্রী

           1     টা ঘর ঘুরলে হয়     360/40  ডিগ্রী

                                              =9  ডিগ্রী

এর মানে , কি দাড়ালো ??? প্রত্যেক ঘর ঘুরবার জন্য উতপন্ন হয় -- 9  ডিগ্রী ।।

এখন কিছু বিষয় আরো খেয়াল রাখতে হবে ---

১) ইনিশিয়াল পয়েন্ট initial  থেকে যখন আমরা , (c1)  প্রথম পজিশনে ঘুরাতে যাবো - তখন আগে , দেখতে হবে - বড় কে ???  যদি  initial > c1 তাহলে , ঘুরাতে হবে মোট =( initial - c1) টা ঘর । আর উলটো হলে হইতো , ( initial - c1)+ 40 টা ঘর ।।

২) যখন c1  থেকে যখন আমরা , (c2)  প্রথম পজিশনে ঘুরাতে যাবো - তখন আগে , দেখতে হবে - বড় কে ???  যদি  c2 > c1 তাহলে , ঘুরাতে হবে মোট =( c2- c1) টা ঘর । আর উলটো হলে হইতো , ( c2 - c1)+ 40 টা ঘর ।।

৩)  যখন c2  থেকে যখন আমরা , (c3)  প্রথম পজিশনে ঘুরাতে যাবো - তখন আগে , দেখতে হবে - বড় কে ???  যদি  c2 > c3 তাহলে , ঘুরাতে হবে মোট =( c2- c3) টা ঘর । আর উলটো হলে হইতো , ( c2 - c3)+ 40 টা ঘর ।।

এখন প্রতিটা ঘর ঘুরালে ,  উতপন্ন হয় -- 9  ডিগ্রী ।সুতরাং , যত ঘর ঘুরবে তার সাথে - 9 দিয়ে গুণ করে সবশেষে ১০৮০ এর সাথে যোগ করলে , মোট কোণ পাবো ।।

চলো , কোড দেখি এবার ----------------



#include<bits/stdc++.h>

using namespace std;

int main()

 {
    int initi, c1, c2, c3, ans;

    while (scanf("%d %d %d %d", &initi, &c1, &c2, &c3)==4)

     {
         if(initi==0 && c1==0 && c2==0 && c3==0)

         {
             break;
         }

        ans = 0;
        ans += (initi - c1) > 0 ? (initi - c1) * 9 : (initi - c1 + 40) * 9;
        ans += (c2 - c1) > 0 ? (c2 - c1) * 9 : (c2 - c1 + 40) * 9;
        ans += (c2 - c3) > 0 ? (c2 - c3) * 9 : (c2 - c3 + 40) * 9;
        ans=ans+1080;
        printf("%d\n", ans);

    }

    return 0;


}

5 comments: