Monday, September 4, 2017

749A. Bachgold Problem Codeforces Problem Solution In (C++,C#) & Logic

http://codeforces.com/problemset/problem/749/A

এটা খুবই মজার একটি সমস্যা । তোমায় একটা , সংখ্যা দেয়া থাকবে । তোমায় , সেই সংখ্যাকে --- সবচেয়ে বেশি সংখ্যক প্রাইম সংখ্যার যোগফল আকারে প্রকাশ করতে হবে । যেমন , তোমায় যদি দেয়া থাকবে  8 , তাহলে  5+3 এইভাবেও প্রকাশ করা যায়   , আবার  2+2+2+2  আকারেও প্রকাশ করা যায় ।
কিন্তু  2+2+2+2 কেই তোমায় বেছে নিতে হবে , কারণ - সবচেয়ে বেশি প্রাইম সংখ্যা এটাতে আছে ।

তাহলে , কিছুটা আমরা বুঝতেই পারছি যে কোনো সংখ্যাকেই কিন্তু , আমরা 3 ও 2 এর যোগফল আকারে প্রকাশ করতে পারবো , তাই না ?? নিজে কয়েকবার ট্রাই করেই দেখো । যেমন , 11 =  2+2+2+2 +3 |
এর মানে , আমরা প্রিন্ট করার সময় শুধু ২ ও ৩  প্রিন্ট করতে হবে , কিন্তু । কয়টা , প্রিন্ট করবো ? সেটা নির্ভর করবে --- তোমায় দেয়া সংখ্যাটি কি জোড় নাকি বিজোড় ??? তোমায় যদি , জোড় সংখ্যা দেয়া থাকে --- তাহলে , শুধু তার অর্ধেক পরিমাণ ২ প্রিন্ট করলেই আমাদের কাজ শেষ , আর যদি -- বিজোড় সংখ্যা দেয়া থাকে - তাহলে , তার  অর্ধেক পরিমাণ ২ প্রিন্ট করে , সাথে আরো একটা ৩ প্রিন্ট করলেই আমাদের কাজ হয়ে যাবে । চলো কোড দেখে আসি এবার ------------------

IN C++ LANGUAGE..............

 #include<bits/stdc++.h>

 using namespace std;

int main()
{
    int k;
    cin>>k;
    cout<<k/2<<endl;
    if(k%2==0)
    {
        for(int i=0;i<(k/2);i++)
        {
            cout<<"2"<<" ";
        }
    }
    else
    {
        for(int i=0;i<((k/2)-1);i++){

            cout<<"2"<<" ";
        }

            cout<<"3"<<" ";
    }
    cout<<endl;
}
 


IN C# LANGUAGE..........................


using System;

public class Test
{

    public static void Main()
   
    {
       
    int k=Convert.ToInt32(Console.ReadLine());
    Console.WriteLine(k/2);
    if(k%2==0)
    {
        for(int i=0;i<(k/2);i++)
        {
            Console.Write("2 ");
        }
    }
    else
    {
        for(int i=0;i<((k/2)-1);i++){

            Console.Write("2 ");
        }

            Console.WriteLine("3 ");
    }
}
}

No comments:

Post a Comment