বুধবার, ৬ জুন, ২০১২

Solution Of Lifht Online Judge 1294 - Positive Negative Sign

            সমস্যাটি আসলেই খুব-ই সোজা । একবার ধরে ফেলতে পারলে মনে হবে এইরকম সমস্যাও ACM এ দেয় ? তাহলে চল দেখা যাক আসলেই কি জানতে চাওয়া হচ্ছে এই সমস্যায় ?

         চল আমরা প্রথম Input/output এর দিকে নজর দেই । যখন n=12 এবং m = 3 তখন সমস্যাটি অনেকটা হয়ে যায় এই রকমঃ
                    -1 -2 -3 +4 +5 +6 -7 -8 -9 +10 +11 +12 
     
       যার উত্তর হলঃ ১৮ ।  n এর মান ছোট তখন আমরা সহজেই এর মান বের করে ফেলতে পারি । কিন্তু n এর মান বড় হলে ?

    সময় এখন উপরের সমস্যাটিকে ভেঙ্গে দেখার ।

           -1 +4 = 3               -7 + 10 =3
           -2+ 5 = 3               -8 + 11 =3
            -3 + 6 =3              -9 + 12 =3

দেখতেই পাচ্ছ যোগ-বিয়োগের ফলে n সংখ্যক terms হয়ে গেছে n/2 সংখ্যক terms যাদের প্রত্যেকের মান হল m সুতরাং   যোগফল  =  m + m + m + .............................( n/2 সংখ্যক terms )
                               =  m * ( 1 + 1+ 1 + .................    ( n/2 সংখ্যক terms )   )
                               = m* ( n/2 )

কাজেই সমাধান হলঃ  result = m* ( n/2 ) .

             শেষে শুধুই একটি warning : result variable এর type long long রাখতে ভুল না  । শুভ কামনার সবটুকু তোমার জন্য রেখে আজকে না হয় এখানেই বিদায় নিলাম । ভাল থেক সবসময় ।   

২টি মন্তব্য:

  1. উত্তরগুলি
    1. কারণ n এর সর্বোচ্চ মান ১০০০০০০০০০ হতে পারে । যার উত্তর int এর limit কে অতিক্রম করবে ।

      মুছুন