Thursday, July 28, 2016

10055 - Hashmat the Brave Warrior

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=996

এই প্রবলেমটা সবচেয়ে সহজ প্রবলেম হিসেবে পরিচিত UVA তে । সবাই একবার পড়ার পরই বুঝতে পারে কি করতে হবে । সাথে সাথে শুরু করে দেই প্রোগ্রাম লিখা ঠিক এইভাবে  int a,b,x;
if(a>b) then x=a-b; else x=b-a । ভাই একটু ভাল করে পড় প্রবলেমটা। এই প্রবলেমটাতে যেই ট্রিক্টা আছে সেটা হল ২^32 পর্যন্ত ইনপুট  নেয়ার বিষয়টা। ইন্টিজার কখনও 2^32 পর্যন্ত ইনপুট নিতে পারেনা। ইন্টিজার এর রেঞ্জ হল -2^31 থেকে  +2^31-1 = -2147483648 থেকে  +2147483647 পর্যন্ত তাই এই প্রব্লেমটাতে ইন্তিজার ব্যবহার করা দণ্ডনীয় অপরাধ হবে। কিন্তু Unsigned long integer or long long int ব্যবহার করা যাবে। কারন Unsigned long integer 2^32-1= ৪২৯৪৯৬৭২৯৫ পর্যন্ত ইনপুট নিতে পারে আর  long long int 2^64-1 = –9,223,372,036,854,775,808 থেকে 9,223,372,036,854,775,807  পর্যন্ত ইনপুট নিতে পারে । সো অনায়াসে চোখ বন্ধ করে তুমি  long long int  অথবা  Unsigned long integer ব্যবহার করতে পারো। সি তে long long int  এবং  Unsigned long integer এর  ফরমেট স্পেছিফাইয়ার হল যথাক্রমে  %lu  এবং  %lld ।

an accepted programme is given below :

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

int main()
{
    unsigned long int a,b,m;

    while(scanf("%lu%lu",&a,&b)==2)
    {
        if(b>a)
        {
            m=b-a;
            cout<<m<<endl;

        }

        else
        {
            m=a-b;
            cout<<m<<endl;
        }


    }

    return 0;
}


No comments:

Post a Comment