UVa : 264


বেশ কয়েকবার পড়ার পরও আমি প্রশ্নটা বুঝি নাই । সিরিজটা কেন এইরকম, সেটা বের করতে পারি নাই । যাইহোক, এটা কিন্তু বেশ সহজ প্রবলেম । প্রথমে সিরিজটা কিভাবে তৈরি হচ্ছে সেটা বলি । সিরিজটা ডায়াগোনালি সামনে যাচ্ছে , এবং শেষ মাথায় এসে দিক পরিবর্তন করে । আবার ডায়াগোনালি সমানে যায় । সবগুলো টার্ম বলে দিলে হয়তো বুঝতে পারবে ।

term 1 : 1 / 1
term 2 : 1 / 2
term 3 : 2 / 1
term 4 : 3 / 1
term 5 : 2 / 2
term 6 : 1 / 3
term 7 : 1 / 4
term 8 : 2 / 3
term 9 : 3 / 2
term 10 : 4 / 1
term 11 : 5 / 1
term 12 : 4 / 2
term 13 : 3 / 3
term 14 : 2 / 4
term 15: 1 / 5

সিরিজটা যদি বুঝতে পারা যায় তাহলে সমাধানের দিকে যাই ।
২টা অ্যারে নিই ।

N = 10000000;
integer numerator [N];
integer denominator [N];

এখন এই অ্যারেতে যদি সিরিজটা আগেই করে রাখি তাহলেই কাজ হয়ে যায় । যেমন : যদি ৩ নাম্বার term print করতে বলে, তাহলে

print : TERM 3 IS numerator [3]/denominator [3]

নাম্বারগুলা কিন্তু একটা প্যাটার্ন মেনে চলে । প্রথমে numerator এর প্যাটার্নটা দেখি,

1 1 2 3 2 1 1 2 3 4 5 4 3 2 1

এই সিরিজটা একটু খেয়াল করলে একটা প্যাটার্ন পাওয়া যাবে ।

1

1 2 3 2 1

1 2 3 4 5 4 3 2 1

পরের লাইনটা হবে,

1 2 3 4 5 6 7 6 5 4 3 2 1

একইভাবে denominator এর প্যাটার্নটা খুজে বের কর ।

একটা সূ্ত্র আছে, যেটা দিয়ে সরাসরি উত্তরটা বলে দেয়া যায় ।
সূত্রটার আগামাথা বুঝি নাই । আমি গণিতে অনেক দূর্বল তো 😦

Advertisements

2 thoughts on “UVa : 264

  1. একটা integer variable 4 byte জায়গা দখল করে ।
    কাজেই, আমাদের integer numerator [N]
    = N * 4 byte
    = 10000000 * 4 byte
    = 40000000 byte
    = 39062.5 kilobyte
    = 38.14 megabyte

    short integer ব্যবহার করা যায় । যদিও short integer এর রেঞ্জ অনেক ছোট, মাত্র ৩২৭৬৮ পর্যন্ত । কিন্তু একটা short integer 2 byte জায়গা দখল করে । এই প্রবলেমের জন্য ছোট integer হলেই হবে ।

    N = 10000000;
    short integer numerator [N];
    short integer denominator [N];

  2. /** apnar problem tar jannaya ai solution ta kaj karta pare **/
    
    class test
    {
    	public static void main(String args[])
    	{
    		int i,j,n;
    		
    		/** n will indicate number of times the series will repeat. **/
    		
    		n=4;
    		
    		for(i=1;i<=n*2-1;i+=2)
    		{
    			for(j=1;j<=i*2-1;j++)
    			{
    				if(j<=(i*2-1)/2)
    					System.out.print(j);
    				else
    				    System.out.print(i*2-j);
    			}
    			System.out.print(" ");
    		}
    	}
    }
    

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s