Wednesday, August 30, 2017

10784 Diagonal Uva Problem Solution & Full Logic

https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1725

খুবই সহজ একটা সমস্যা , যদি তুমি বিষয়টি ধরতে পারো - তাহলে । চলো , তাহলে শুরু করি --------
আমরা একটা জিনিস জানি -- সেটা হলো , যদি  N  বাহু  বিশিষ্ট  কোনো  ক্ষেত্র থাকে , তাহলে , সেখানে  
কর্ণ থাকবে  N*( N - 3 ) / 2 টি ।।   বিশ্বাস না হলে , চলো - চতুর্ভুজ দিয়ে চেক করে দেখি - চতুর্ভুজ এর বাহু মোট 4 টি , সুত্র অনুযায়ী কর্ণ হবে -   4*( 4 - 3 ) / 2 = 2 টি ।। আশা করি , সুত্র নিয়ে কিছুটা স্বস্তি অনুভব হচ্ছে , তাই না ??

এবার আসি , আসল কথায় --- তোমাকে ঠিক উলটো কাজ'টি করতে হবে  ।   তোমায় , একটা ভুজের কর্ণ এর সংখ্যাই দেয়া থাকবে , তোমায় বের করতে হবে , সেই ভুজের কমপক্ষে বাহু কয়টা আছে ?? এর মানে --  N  এর মান বের করতে হবে।  তাহলে , ধরে নিলাম - দেয়া কর্ণ এর সংখ্যা  C টি । তাহলে , আমরা কি - কোনো সমীকরণে দাড় করাতে পারি - বিষয়টি ?? চলো , দেখা যাক ----

                                       ( N*( N - 3 )) / 2 = C

                                    => (  N * (  N  - 3 ) )  = 2*C

                                   =>  N^2 - 3*N = 2*C
                                 
                                  =>  N^2 - 3*N - 2*C =0

  এখন  দেখো তো , উপরের সমীকরণ'টি  Ax^2 + Bx + C =0  এর মতো লাগছে না ?? হুম , আশা করি বুঝতে পেরেছো যে - কি করতে যাচ্ছি ??? তো চলো , এখন আমরা সুত্র অনুযায়ী এর সমাধান বের করি ।

 আমরা জানি , ( -B + ( sqrt ( B^2 - 4*A*C ) ) /2*A  হলো , Ax^2 + Bx + C =0 সমীকরণের সমাধান   । শুধু মাত্র , ধনাত্বক নিলাম , কারণ - বাহু কখনো ঋণাত্বক হয় না ।।  যাই হোক , আমরা সুত্র অনুযায়ী ,
                       N^2 - 3*N - 2*C =0    সমীকরণের সমাধান করে - ফেলতে হবে , তাহলেই আমরা
   চলক   N   এর  মান  পেয়ে  যাবো  ,  অর্থাৎ আমাদের কাংক্ষিত উত্তরখানা পেয়ে যাবো ।। 

 তাহলে , এর মান হবে  " 3 + sqrt(9+8*n))/2 "   [ সুত্র অনুযায়ী ,( -B + ( sqrt ( B^2 - 4*A*C ) ) /2*A তে     N^2 - 3*N - 2*C সমীকরণের সহগগুলো বসিয়ে পাওয়া ]    ।।

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

 #include<bits/stdc++.h>



using namespace std;



int main()
{
    int i;
   double n,p;
for(i=1;scanf("%lf",&n) && n;i++){
    p = ceil((3+sqrt(9+8*n))/2);
printf("Case %d: %.0lf\n",i,p);

}
    return 0;
}
























     

Monday, August 28, 2017

1933 Tri-du Uri Problem Only Solution In C#


using System;

class URI {

    static void Main(string[] args) {

      string s=Console.ReadLine();
      string[] values=s.Split(' ');
      int A=int.Parse(values[0]);
      int B=int.Parse(values[1]);
      if(A>B)
      {
          Console.WriteLine(A);
      }
      else
      {
          Console.WriteLine(B);
      }
    }

}

1921 Guilherme and His Kites Uri Problem Only Solution In C#



using System;

public class Test

{
    public static void Main()
   
    {
      
      long a=Convert.ToInt64(Console.ReadLine());
       long n=(a*(a-3))>>1;
      Console.WriteLine(n);
   
    }   
}

2152 Pepe, I Already Took the ... Uri Problem Only Solution In C#


using System;

public class Test

{
    public static void Main()
   
    {
       
   
    int tst=Convert.ToInt32(Console.ReadLine());
    for(int i=0;i<tst;i++)
    {
        string s=Console.ReadLine();
        string[] values=s.Split(' ');
        int H=int.Parse(values[0]);
        int M=int.Parse(values[1]);
        int O=int.Parse(values[2]);
       
        if(H<10)
       
        {
            Console.Write("0"+H+":");
        }
        else
        {
            Console.Write(H+":");
        }
       
        if(M<10)
       
        {
            Console.Write("0"+M);
        }
        else
        {
            Console.Write(M);
        }
       
        if(O == 0)
        {
            Console.WriteLine(" - A porta fechou!");
        }
        else
        {
            Console.WriteLine(" - A porta abriu!");
        }
    }
   
   
    }   
}

2061 Closing Tabs Uri Problem Only Solution In C#



using System;

public class Test
{
    public static void Main()
    {
    string s=Console.ReadLine();
    string[] values=s.Split(' ');
    int N=int.Parse(values[0]);
    int M=int.Parse(values[1]);
    int count=N;
    for(int i=0;i<M;i++)
    {
        string str=Console.ReadLine();
       
        if(str[0]=='f'){
            count++;
        }
            else{
                count--;
            }
    }
    Console.WriteLine(count);
       
    }   
}

2143 The Return of Radar Uri Problem Only Solution In C#


https://www.urionlinejudge.com.br/judge/en/problems/view/2143



using System; 

 class Exercise8


   
    static int max(int a, int b)
    
  {
    return ((a>b) ? a: b);
  }
       
     static void Main()
    
    {
       
    while(true)
    {
         int tst=Convert.ToInt32(Console.ReadLine());
         if(tst==0)
         {
             break;
         }
        for(int i=1; i<=tst; i++)
        {
            int n=Convert.ToInt32(Console.ReadLine());
            if(n%2!=0) Console.WriteLine( n*2-1);
            else Console.WriteLine(n*2-2);
        }
    }
    }
   
}

DCP-320: Print a number Devskill Problem Solution & Logic

https://www.devskill.com/CodingProblems/ViewProblem/320

তোমাকে এমন একটা সংখ্যা প্রিন্ট করতে হবে , যেটা মৌলিক'ও না - আবার যৌগিকও না ।

বুঝতেই পারছো , এরকম একটাই সংখ্যাই আছে সেটা হলো " ১" ।

In C++ ..............

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

int main() {
    cout<<"1"<<endl;
    return 0;
}


In C# ...................

using System;

public class Test
{
    public static void Main()
    {
        Console.WriteLine("1");
    }
}

DCP-33: Catch Me If You Can Devskill Problem Only Solution In C#

https://www.devskill.com/CodingProblems/ViewProblem/33



using System; 

 public class Exercise8 


     public static void Main()
   
     {
        int k=Convert.ToInt32(Console.ReadLine());
       
        for(int p=1;p<=k;p++){
            string s=Console.ReadLine();
            string[] values=s.Split(' ');
            int a=int.Parse(values[0]);
            int b=int.Parse(values[1]);
            int c=int.Parse(values[2]);
            int d=int.Parse(values[3]);
            int e=a*d;
            int f=(b*d)+c;
            if(f<e || (c==0 && d>0))
                Console.WriteLine("Case "+p+": Abir will be arrested");
            else
                Console.WriteLine("Case "+p+": Abir will survive");
        }
     }

}

DCP-34: Number of Digits Devskill Problem Solution & Logic

https://www.devskill.com/CodingProblems/ViewProblem/34

তোমায় একটা সংখ্যা দেয়া থাকবে , তোমায় বলতে হবে -- সেই সংখ্যায় কয়টি ডিজিট আছে ??? 
ধরো , দেয়া থাকলো -- ৪৫৫ , এখন তোমায় বলা হলো যে , এতে কয়টা ডিজিট আছে ??? তুমি কি করবে ??      একটা উপায় আছে আমরা  যদি ৪৫৫ কে ১০ দিয়ে ভাগ দিতে থাকি যতক্ষন না , উত্তর ১ এর চেয়ে কম না হয় , তাহলেই কিন্তু - হয়ে যাবে । । ।

৪৫৫/১০ = ৪৫
৪৫/১০   = ৪
৪/১০     =  ০

যেহেতু , আমরা একটা ইন্টিজার সংখ্যা চিন্তা করছি ও ভাগফল ইন্টিজার টাইপ ভ্যারিয়েবল এ স্টোর করছি , তাই   -- ভাগফল গুলো উপরের মতোই আসবে । দশমিক মান গুলো আসবে না । তাহলে , যতক্ষন ভাগফল ০ না আসে , ততক্ষন যদি ভাগ করেই যাই - তাহলে মোট কতোবার ভাগ করলাম ??
মোট , ৩ বার   তাই না  ??  হুম , ৪৫৫ সংখ্যাতে আছেও মোট ৩ টা ডিজিট  । । 

যাই হোক , চলো - এই পদ্ধতি অ্যাপ্লাই করি --------------------

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

#include<iostream>
#include <cstdio>
#include<cmath>
#include<set>
#include<algorithm>
#include<cstring>

using namespace std;

////Nayeem Mollick Joy,Applied Physics &Electronic Engineering,University of Rajshahi.

int main()

{
    cin.tie(0);

    ios::sync_with_stdio(0);

    int n,t;

    cin>>t;

    while(t--)

    {
        cin>>n;
        int count=0;
        if(n==0)
        {
            cout<<"1"<<endl;
        }
        else{
        while(n!=0)
        {
            n=n/10;
            count++;
        }
        cout<<count<<endl;
        }
    }
    return 0;
}



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


using System;

public class Test

{
    public static int joy(int n)
   
    {
      
        int count=0;
      
        if(n==0)
        {
            count=1;
        }
      
        else{
      
        while(n!=0)
      
        {
            n=n/10;
            count++;
        }
      
        }
      
        return count;
      
    }
    public static void Main()
   
    {
        int T = Convert.ToInt32(Console.ReadLine());
        for(int i=0;i<T;i++)
        {
            int X = Convert.ToInt32(Console.ReadLine());
            int L = joy(X);
            Console.WriteLine(L);
        }
    }
   
}

DCP-13: Banglawash Devskill Problem Solution & Logic

https://www.devskill.com/CodingProblems/ViewProblem/13

ক্রিকেট খেলা সম্পর্কে  যার ভালো ধারণা আছে , সে এটা খুব সহজেই সলভ করতে পারবে ।


তোমায় বাংলাদেশ ও পাকিস্তানের দুইটি টেস্ট সিরিজের ইনিংস দুই লাইনে , ইনপুট দেয়া থাকবে ।
তোমায় , ২ লাইনে মোট ৮ টি ইন্টিজার দেয়া থাকবে , প্রথম লাইনের ---- প্রথম দুইটা ইন্টিজার
বাংলাদেশের ব্যাটিং হিস্ট্রি ও সেকেন্ড ২ টা ইন্টিজার পাকিস্তানের ব্যাটিং হিস্ট্রি ।

পরের লাইনে ২য় টেস্টের ,সেইম  হিস্ট্রি দেয়া থাকবে । ।

এখন দুইটা তেস্টেই যদি বাংলাদেশ জিতে যায় , তাহলে প্রিন্ট করবে ---
          Banglawash  আর না হলে , প্রিন্ট করবে Miss
 
 চলো কোড দেখি এইবার ,
 
 
 
  In C++  ...................................
 

#include <bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>

//Nayeem Mollick Joy, Applied Physics And Electronic Engineering,University of Rajshahi.

using namespace std;

int main()

{
    int H,N,a,T,b1,b2,p1,p2;

    cin>>T;

    while(T--)

    {
        int ok=0;
        for(int i=0;i<2;i++)
        {
            cin>>b1>>b2>>p1>>p2;
            if((b1+b2)>(p1+p2))
            {
                ok++;
            }
        }
        if(ok==2)
        {
            cout<<"Banglawash"<<endl;
        }
        else
        {
            cout<<"Miss"<<endl;
        }
        ok=0;
    }

    return 0;
}
 
 
In C#.............................

using System;

public class Test
{
 public static void Main()
 {
  
   int T=Convert.ToInt32(Console.ReadLine());

    for(int i=0;i<T;i++)

    {
        int ok=0;
        for(int j=0;j<2;j++)
        {
            string s=Console.ReadLine();
            string[] values=s.Split(' ');
            int b1=int.Parse(values[0]);
            int b2=int.Parse(values[1]);
            int p1=int.Parse(values[2]);
            int p2=int.Parse(values[3]);
            if((b1+b2)>(p1+p2))
            {
                ok++;
            }
        }
        if(ok==2)
        {
            Console.WriteLine("Banglawash");
        }
        else
        {
            Console.WriteLine("Miss");
        }
        ok=0;
    }
  
  
  
  
  
 }
}

11900 - Boiled Eggs Uva Problem Solution & Logic

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

তোমায় কিছু n সংখ্যক  ডিম দেয়া থাকবে , সেগুলোকে একটা বাটিতে নিয়ে সিদ্ধ করতে হবে
কিন্তু , P এর বেশী সংখ্যক ডিম বাটিতে রাখা যাবে না , তাহলে রিস্ক হয়ে যাবে  । আর , বাটি সর্বচ্চ  Q গ্রাম  ডিম বহন করতে পারে , তোমাকে যে কয়টা ডিমের কথা বলা আছে -- সে কয়টা ডিম এর প্রত্যেক
কতো গ্রাম করে ?? সেটাও বলে দেয়া থাকবে ইনপুটে । এখন , তোমায় বলতে হবে -----সব ধরনের সাবধানতা অবলম্বন করে মোট কয়টা ডিম , ওই বাটিতে নিয়ে সেদ্ধ করা সম্ভব হবে ???



এটা আহামরি কিছু নয় , যে অ্যারে'তে ডিম কতো গ্রাম করে ?? সেটা দেয়া আছে । । সেই অ্যারে'র মান গুলো যোগ করতে থাকবা এমনভাবে , যেনো কখনো  Q গ্রাম এর বেশী না হয় ও ডিম এর সংখ্যা P এর চেয়ে বেশী না হয় , আশা করি - এবার ইমপ্লিমেন্ট করতে কোনো সমস্যা হবার কথা নয় ।।

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


#include <iostream>






using namespace std;
int main()
{
    int t,k,n,p,q,i,a[32],sum;
    scanf("%d",&t);
    for(k=1;k<=t;k++)
    {
        scanf("%d %d %d",&n,&p,&q);
        for(i=0;i<n;i++)
        scanf("%d",&a[i]);
     for(i=0,sum=0;i<n;i++)
     {
         if(i>=p || sum+a[i]>q) break;
         else sum+=a[i];
     }


         printf("Case %d: %d\n",k,i);

    }
    return 0;
}

10948 - The primary problem Uva Problem Solution & Logic

https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1889

খুবই মজার একটা সমস্যা , তোমায় একটা সংখ্যা দেয়া থাকবে । সেটাকে , দুইটা মৌলিক সংখ্যার
যোগফল হিসেবে  , তোমায় প্রকাশ করতে হবে । ।        ধরো ,দেয়া আছে ১০   ,

        তাহলে    ,   ১০ = ৩ + ৭
                           ১০ = ৫ + ৫ 
          এখানে ১০ কে এই দুই ভাবেই কিন্তু লেখা যায় , তাই না ?? কিন্তু , আমাদের  প্রথমটাই বেছে নিতে হবে , কারণ ,  ৩ ও ৭ এর মাঝের ডিফারেন্স   ৫ ও ৫ এর মাঝে ডিফারেন্স থেকে বড়ো , তাই আমরা প্রথমটাকেই বেছে নেবো ।

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

১)  ২ ছাড়া বাকি সব মৌলিক সংখ্যাই , বিজোড় সংখ্যা ।

২) যদি , ইনপুটে কোনো বিজোড় সংখ্যা দেয়া থাকে , তাহলে তোমায় বুঝতে হবে যে --- এটা কে ২ টা মৌলিক সংখ্যার যোগফল হিসেবে প্রকাশ করা যাবে না , কারণ -- ২ টা মোলিক সংখ্যা যোগ করলে সবসময় জোড় হবে , বিজোড় হবে না । শুধু , ২ এবং  অন্য কোনো মৌলিক সংখ্যা দিয়ে যদি প্রকাশ করা যায় , তাহলে সেটা আলাদা কথা ।

৩) আর যদি , কোনো জোড় সংখ্যা (N) থাকে ইনপুটে , তাহলে --- i=3 থেকে শুরু করে লুপ ঘুরাবো , যেখানে যেয়ে  N-i & i মৌলিক সংখ্যা হবে , সেটাই হবে উত্তর ।

মৌলিক সংখ্যা চেক করার জন্য আলদা , একটা ফাংশন কিন্তু বানিয়েই রাখবো ।।


চলো , এবার যা যা বুঝলাম একটু কষ্ট করে  ইমপ্লিমেন্ট করে আসি

#include<bits/stdc++.h>

using namespace std;

 bool isprime(int t)
{
    int i,val;
    val = sqrt(t);
    for(i=2;i<=val;i++)
    {
        if((t%i)==0)
        return false;
    }
    return true;
}

int main()
{
    int n,i;

    while(scanf("%d",&n) && n)
    {
        if(n%2==1)
        {
            if(isprime(n-2))
            {

              cout << n << ':' << '\n' << 2 << '+' << n-2 << '\n';
            }
            else

            cout << n << ':' << '\n' << "NO WAY!" <<"\n";
        }
        else
        {
                for(i=3;i<=n;i++)
                {
                   if(isprime(i) && isprime(n-i))
                   {
                         cout << n << ':' << '\n' << i << '+' << n-i <<"\n";
                       break;
                   }
                }
        }
    }

    return 0;
}

Sunday, August 27, 2017

10070 - Leap Year or Not Leap Year and ... Uva Problem Solution & Logic


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


একটা মজার প্রোবলেম , কিন্তু --- তোমায় প্রোবলেম ডেস্ক্রিপশন খুব ভালো করে পড়তে হবে । আসলে ,
কি বলেছে ??? তোমায় একটা সাল দেয়া থাকবে , এখন সমস্যা হলো  শাল অনেক বড়ো হতে পারে ,যা
আমাদের স্ট্রিং আকারে নিতে হবে । ।

তারপর দেখতে হবে ,কিছু মোস্ট গুরুত্বপূর্ণ  বিষয়       ------------------------



 যদি,  ৪ দ্বারা বিভাজ্য হয় ও ১০০ দ্বারা বিভাজ্য না হয় অথবা ৪০০ দ্বারা বিভাজ্য হয় , তাহলে সাল'টি 
লিপ ইয়ার ।। 
যদি , ১৫ দ্বারা বিভাজ্য হয় তাহলে , লিপ ইয়ার হওয়া সত্তেও এটা  huluculu festival year ও হবে ।

এখন যদি সাল'টি লিপ ইয়ারের শর্ত ইতিমধ্যে পূরণ করে থাকে , তাহলে ৫৫ দ্বারা বিভাজ্য হলে সাল'টি
 bulukulu festival year ও হবে ।
আর যদি , সালটি কোনো ক্যাটাগরিতেই না পরে , তাহলে an ordinary year. বলে গণ্য হবে । 


এখন সমস্যা হইলো -- স্ট্রিং আকারে যেহেতু নিচ্ছি , সুতরাং এটা ৪/১০০/৫৫/১৫ দ্বারা বিভাজ্য কি না ?? 
এটা কিভাবে বুঝবো ??? ঠিক স্ট্রিংকে ভাগ কিভাবে করতে হয় ? এরকম একটা প্রোবলেম এর আগেও সলভ করেছি , সেটার লিঙ্ক দিলাম - চাইলে দেখে পরিষ্কার হতে পারো 

একবার না বুঝিলে দেখো শতবার , যদি না বুঝে থাকো , তাহলে বারবার বোঝার ট্রাই করো 

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


#include<bits/stdc++.h>

using namespace std;

int main ()
{
    long Flag, Mod4, Mod100, Mod400, Mod15, Mod55, I, Len, leap;
    char A[1000000];
    int print = 0;

    while (cin >> A){

        if ( print != 0 )
            printf("\n");
        print = 1;

        leap = Flag = Mod4 = Mod100 = Mod400 = Mod15 = Mod55 = 0;

        Len = strlen (A);

        for (I=0; I< Len; I++) {

            Mod4 = ((Mod4 * 10) + (A[I]-'0')) % 4;
            Mod100 = ((Mod100 * 10) + (A[I]-'0')) % 100;
            Mod400 = ((Mod400 * 10) + (A[I]-'0')) % 400;
            Mod15 = ((Mod15 * 10) + (A[I]-'0')) % 15;
            Mod55 = ((Mod55 * 10) + (A[I]-'0')) % 55;
        }

        if ((Mod4==0 && Mod100!=0) || Mod400==0){
            printf("This is leap year.\n");
            leap = 1;
            Flag = 1;
        }

        if (Mod15==0){
            printf("This is huluculu festival year.\n");
            Flag = 1;
        }

        if (leap==1 && Mod55==0)
            printf("This is bulukulu festival year.\n");

        if (Flag==0)
            printf("This is an ordinary year.\n");
    }
    return 0;
}

10773 - Back to Intermediate Math Uva Problem Solution & Logic

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


এখন ,এরকম সমস্যার সম্মুখীন আমরা এর আগেও হয়েছি , অনেকবার । মনে আছে কি ??  ইন্টারমিডিয়েটে থাকতে , ফিজিক্সে এরকমের অনেক প্রোবলেম দেয় থাকতো .। ।
চলো , দেখি এবার - আসলে কাহিনী হচ্ছে টা কি ??????

তোমাকে নদীর বেগ v, নৌকার বেগ u, এবং নদীর পাড়ের দুরুত্ত d, দেওয়া থাকবে ইনপুটে । তোমায় প্রিন্ট করতে হবে সর্বনিম্ন পথে যেতে যে  সময় লাগে  ??? এবং , সর্বনিম্ন সময়ে যে পথ পাড়ি দেয়া যায় - এই দুই সময়ের মাঝে'র ডিফারেন্স ।।


এখন নদীর গতি অপেক্ষা করে  এক পাড় থেকে অন্য পাড় যেতে সরবনিম্ন সময় লাগবে  t1=d/u;
এক পাড় থেকে অন্য পাড় সজাসজি ( সর্বনিম্ন পথে )  যেতে সময় t2 বের করিঃ

চিত্র থেকে বুঝা যাচ্ছে r=sqrt(u*u-v*v) ।

সুতরাং ,  সর্বনিম্ন পথে  যেতে সময়  t2=d/sqrt(u*u-v*v) ।

এক্ষেত্রে লক্ষ রাখতে হবে যে  u<v হলে error দেখাবে। কারন রুট ওভার  এর ভিতরে মান  negative হতে পারে না।

যাই হোক , সুত্রগুলো তো বোঝা শেষ - এবার খুবই  সাবধানে  কোড দেখে ফেলি চলো ---


#include<bits/stdc++.h>

using namespace std;
int main()
{
    long long t,i,j;
    double t1,t2,t3,u,v,d;
    cin>>t;
    for(i=1; i<=t; i++)
    {
        cin>>d>>v>>u;
        {
            if(v>=u)
                cout<<"Case "<<i<<": "<<"can't determine\n";
            else
            {
                t1=(d/u);
                t2=(d/(sqrt(u*u-v*v)));
                //cout<<t1<<" "<<t2<<" "<<t1-t2<<endl;
                t3=t2-t1;
                if(t3<=0)
                    cout<<"Case "<<i<<": "<<"can't determine\n";
                else
                   {
                          cout<<"Case "<<i<<": ";
                printf("%.3lf\n",t3);}
            }
        }
    }
    return 0;
}

11461 - Square Numbers Uva Problem Solution & Logic



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


এর  চেয়ে   ,  সহজ  সমস্যা  আর  কি  হতে  পারে ??   তোমায় , দুইটা  সংখ্যা দেয়া  আছে , তোমায়
এই সংখ্যা দুইটির মাঝে কতগুলো সংখ্যা আছে পূর্ণ বর্গ ?? সেটা বের করতে হবে ???
পারবে না ???? 

একটা সংখ্যা পূর্ণ বর্গ কি না       ??           সেটা কিভাবে , চেক করতে হয়     ??      সেটা জানো  তো  ??
চলো , একবার বুঝে নেই - কিভাবে করতে হবে    ?????          ধরো তোমায় , একটা সংখ্যা (n) ১০ দেয়া আছে  , তাহলে ---- একে যদি  sqrt  ফাংশনে ফালাইয়া দেই int p = sqrt(n)   , তাহলে --- উত্তর কি পাবো ???  p=3.1...   মানে  ,  3 এর পরে আরো কিছু দশমাংশ পাবো , তাই না ?? কিন্তু , যেহেতু p কে  int হিসেবে   ডিক্লেয়ার  করেছি  , সুতরাং --- p এর মান দশমাংশ পাবো না । আসলে পাবো - এই ক্ষেত্রে ,
 p=3 ।  এখন , যদি আবার -  p*p  এর মান বের করে চেক করি , p*p  এর মান  n  এর সমান কি না ??
তাহলেই বুঝতে পারবো যে - n  সংখ্যাটি  পূর্ণ বর্গ কি  না ???
 চলো , কোড দেখে আসি - এইবার ,


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

int main()
 
{
    int t,a,b,c,i,d;
 
    while(scanf("%d %d", &a, &b)==2)
 
    {
 
        if(a==0&&b==0){
        break;
}
        d=0;
 
        for(i=a;i<=b;i++)
        {
           c=sqrt(i);
           if(c*c==i)
           d++;
        }
 
        printf("%dn", d);
    }
 
return 0;
 
}

10018 - Reverse and Add Uva Problem Solution & Logic


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


তোমায় একটা সংখ্যা দেয়া থাকবে , সেই সংখ্যাটিকে তোমার পুরো রিভার্স করে  - দেয়া সংখ্যাটির সাথে
যোগ করে , যোগফল যদি প্যালিন্ড্রোম না হয় ; তাহলে , আবার এটাকে রিভার্স করে উপরের প্রোসেস এর মতো করে যেতে থাকবো , যতক্ষন না --- যোগফল প্যালিন্ড্রোম না হয় ।। 

চলো , একটা উদাহরণ দেখে আসি -----

195 , Initial number
591
----
786
687
-----
1473
3741
----
5214
4125
------
9339, Resulting palindrome
                                     
19ত    তাহলে , তোমায়  Resulting palindrome  ও কতোবার যোগের ঘটনাটি ঘটে ?? সেটা প্রিন্ট করতে হবে     হবে । উপরে , যোগের ঘটনা ঘটেছে মোট ৪ বার ।।

            চলো , কোড দেখে আসি ---------------

#include<stdio.h>
 
int main()
 
{
 
    long long  n,a,s,c;
 
    int t,i;
 
    while(scanf("%d",&t)==1)
    {
        for(i=1;i<=t;i++)
        {
            scanf("%lld",&n);
        a=n;
        c=0;
 
        while(1)
        {
            s=0;
        while(n!=0)
            {
                s=s*10+n%10;
                n/=10;
            }
        if(s==a){
        break;
}
        else
        {
        n=s+a;
        a=s+a;
        c++;
        }
 
 
    }
    printf("%lld %lldn",c,a);
        }
    }
 
   return 0;
}

10038 - Jolly Jumpers Uva Problem Solution & Logic

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



এই সমস্যাটি , ঠিকভাবে বর্ণনা দেওয়া নেই , জাজ-এ এ কারণেই , অনেক কিছুই স্পষ্ট থাকে না অনেকের কাছে , এই সমস্যা নিয়ে ।

যাই হোক , তোমায় একটা - অ্যারে দেওয়া থাকবে , তোমায় সেই উপাদানগুলির পার্থক্য  বের করতে হবে , তারপরে সর্ট করতে হবে - এখন যে মান পাবো ,সেটা অবশ্যই  ১ হতে  যে কয়টা উপাদান থাকবে অ্যারে'তে তার চেয়ে এক কম অবদি  থাকতে হবে ।

চলো , একটা উদাহরণ দেই - তাহলে বিষয়টা ক্লিয়ার হবে , আমাদের কাছে

ধরো , অ্যারে'তে  4  টি মান দেয়া আছে ,       1    4    2     3    
                                                
             তাহলে      ডিফারেন্স গুলো     হবে       3     2     1      তাই না  ??? 


অ্যারে'তে  কয়টি মান দেইয়া ছিলো ??  4  টি, এখন   এই  4 থেকে 1   বিয়োগ করলে কতো হয় ??  3, তাই না ??   হুম , তাহলে  1 থেকে  3 অবদি সব সংখ্যা কি ??? ওই ডিফারেন্স এর যে লিস্ট বানাইছি , সেটাতে আছে ??  ডিফারেন্স এর লিস্ট এ আছে   3     2     1   , এর মানে  1 থেকে  3 অবদি সব সংখ্যা এই ডিফারেন্স লিস্টেই আছে , সুতরাং এটা জলি জাম্বার ।

#include<algorithm>
#include<cmath>
#include<cstdio>

using namespace std;

int n;
int ar[3100], dar[3100];


int main() {
   
    while(scanf("%d", &n) == 1) {
            bool joy=true;
        for(int i = 0; i < n; i++){
            scanf("%d", &ar[i]);
        }
       
        for(int i = 0; i < n - 1; i++){
        dar[i] = abs(ar[i + 1] - ar[i]);
        }
       
    sort(dar, dar + n - 1);
   
    for(int i = 0; i < n - 1; i++)
       
        if(dar[i] != i + 1) {
            joy=false;
        }
   
        if(joy==false){
    printf("Not jolly\n");
        }
       
        else{
    printf("Jolly\n");
        }
       
    }
    return 0;
}








DCP-184: Easy Sequence Devskill Solution With Logic

https://www.devskill.com/CodingProblems/ViewProblem/184


এখন , এখানে প্রথমে বেইস কেস দেখে বোঝার ট্রাই করতে হবে --  এখানে একটা সিকুয়েন্স দেয়াই আছে       1 3 4 ............... N .        



তাহলে  , তুমি বুঝতেই পারছো যে  ---  প্রত্যেকটি সংখ্যাই তার আগের দুইটি সংখ্যার যোগফলের সমান ।

N (1 ≤ N ≤ 44)  দেয়াই আছে  , সুতরাং  44 সাইজ বিশিষ্ট একটা অ্যারে ডিক্লেয়ার করে , একটা লুপ খাটিয়ে উপরের সিকুয়েন্স অনুযায়ী অ্যারের মান ফিল আপ করবো , চলো - কোড দেখি এইবার



#include<iostream>
#include<cstdio>

using namespace std;

int main()

{
  int joy[44];
   joy[0]=1;
   joy[1]=3;
   joy[2]=4;
   for(int i=3;i<44;i++)
   {
       joy[i]=joy[i-1]+joy[i-2];
   }
   int t,n;
   scanf("%d",&t);
   while(t--)
   {
       scanf("%d",&n);
       printf("%d\n",joy[n-1]);
   }
   return 0;
}

DCP-117: Not Easy But Not Hard Devskill Problem Solution & Logic

https://www.devskill.com/CodingProblems/ViewProblem/117

এর চেয়ে সহজ একটা প্রোবলেম আর কি হতে পারে ??? তোমায় একটা সংখ্যা দেয়া থাকবে , তোমায় ১ হতে সেই অবদি যোগফল প্রকাশ করতে হবে । তবে , লুপ ঘুরিয়ে কিন্তু নয় ,আবার ------------
আমাদের ছোটবেলার সেই ফর্মুলা থেকে  The summation of all numbers till N from 1 = (N*(N+1))/2 |

তো চলো , কোড দেখে নেই   C++  এ

#include<iostream>
#include <cstdio>
#include<cmath>
#include<set>
#include<algorithm>
#include<cstring>

using namespace std;

////Nayeem Mollick  Joy,Applied Physics &Electronic Engineering,University of Rajshahi.

int main()

{
    cin.tie(0);

    ios::sync_with_stdio(0);

   int t;
  
   cin>>t;
  
   unsigned long long int sum,n;
  
   while(t--)
   {
       cin>>n;
      
       cout<<((n*(n+1))>>1)<<endl;
   }
   return 0;

}

এখন   সি( শার্প )  C#  - এ সলিউশন ------------

using System;

public class Test
{
    public static void Main()
    {
        int t=Convert.ToInt32(Console.ReadLine());
        for(int i=0;i<t;i++)
        {
            long n=Convert.ToInt64(Console.ReadLine());
            long a=(n)*(n+1);
            Console.WriteLine(a>>1);
        }
    }
}

DCP-74: Mobile Key Devskill Problem Solution & Logic


https://www.devskill.com/CodingProblems/ViewProblem/74

বাচ্চা লেভেলের একটা সমস্যা , আমরা মোবাইলের কি-প্যাডে যেরকম সিকুয়েন্স দেখতে পাই সেটা যদি একটু চেঞ্জ করি ,তাহলে কি দাঁড়ায় ??

                                                     1        2       3
                                                     6        5       4
                                                     7        8       9
                                                      .......................

এখন তোমাকে Row নাম্বার দেয়া থাকবে , তোমায় সেই Row এর ভেতরে যে তিন'টি সংখ্যা আছে সেটা প্রিন্ট করতে হবে   ।।  তাহলে , ধরো -- যদি দেয়া থাকবে 2 ,তাহলে -    6        5       4, অর্থাৎ - বাম পাশের নাম্বার'টি ( 6 ) ,  Row নাম্বার ( 2 )  এর তিনগুণ  , তাই না  ??   তারপরের ডান দিকের সংখ্যাটি আরো এক কম , আর - তারপরের ডান দিকের সংখ্যাটি আরো এক কম।

                ম্যাথমেটিকালি যেভাবে লিখা যায় ,        (3*n )             (3*n -1)          (3*n-2)

আর যদি  ,  Row নাম্বার বিজোড় হয় ,তাহলে ??    এবার কিন্তু , একটু আলাদা উপরের সিকুয়েন্স দেখেই বুঝতেই পারবে , যাই হোক ------------------

ম্যাথমেটিকালি যেভাবে লিখা যায় ,        (3*n -2)             (3*n -1)          (3*n)   

             একটু , ভেবে দেখো --- আশা করি , বুঝতে পারবে সিকুয়েন্স গুলি । ।


চলো , কোড দেখি এবার  প্রথমে  C++ এর কোড দেখি ,

#include<iostream>

using namespace std;

void pattern(unsigned long long int N)
{
    if(N%2==0)
    {
        N=N*3;
        cout<<" "<<N<<" "<<N-1<<" "<<N-2<<endl;
    }
    else
    {
        N=N*3;
        cout<<" "<<N-2<<" "<<N-1<<" "<<N<<endl;
    }
}

int main()

{
   int t;

   cin>>t;

   unsigned long long int N;

   for(int i=1;i<=t;i++)
   {
       cin>>N;
       cout<<"Case #"<<i<<":";
       pattern(N);
   }

   return 0;

}

এবার  C# ( সি শারপ) এ কোড দেখি ---


using System;

public class Test

{
    public static void Main()
   
    {
       
   

   int t=Convert.ToInt32(Console.ReadLine());

   for(int i=1;i<=t;i++)
   {
        long N=Convert.ToInt64(Console.ReadLine());
         if(N%2==0)
    {
        N=N*3;
        Console.WriteLine("Case #"+i+": "+N+" "+(N-1)+" "+(N-2));
    }
    else
    {
        N=N*3;
        Console.WriteLine("Case #"+i+": "+(N-2)+" "+(N-1)+" "+N);
    }
      
   }

}
}

Saturday, August 26, 2017

579 - Clock Hands Uva Problem Solution With Logic

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


অনেক সহজ বাট একটু  , প্যাচযুক্ত একটা সমস্যা . আর সেটা , হলো --- ঘড়ির কাটার সমস্যা , ঘন্টার কাটা ও মিনিটের কাটা'র মধ্যে উতপন্ন কোণ নির্ণয় করা  ।।  সেই জন্য , আপাতত এই ঘড়ি'কেই আমরা
একটু চিন্তা করবো । 

আচ্ছা , ঘন্টার কাটা পুরো এক ঘন্টায় একবার রাউন্ড দেয় তাই না ?? এর মানে , ঘন্টার কাটা একটা বৃত্ত বানাতে জাস্ট    ১২ ঘন্টা / (৬০X১২ = ৭২০) মিনিট সময় নেয়   , এর মানে ৩৬০ ডিগ্রী কোণ উতপন্ন করে  । ।

তাহলে  ,    ঘন্টার কাটা  ৭২০  মিনিটে   উতপন্ন  করে  মোট    ৩৬০ ডিগ্রী
                  ঘন্টার  কাটা    ১   মিনিটে   উতপন্ন করে   ৩৬০/৭২০ == ০.৫ ডিগ্রী

তাহলে , ধরো বলা হলো -- ঘন্টার কাটা ৭ ঘন্টা ১৫ মিনিটে কত কোণ উতপন্ন করবে ???? ( আপাতত , মিনিটের কাটার হিসাব বাদ )  তাহলে , তুমি কি করবে /?? হুম , তাহলে উপরের নিয়মের মতো করে
মিনিটের হিসাব করে   ( ৭ X ৬০ + ১৫ = ৪৩৫   )    তার সাথে ০.৫ দিয়ে গুণ করলেই তুমি পাবে , ঘন্টার কাটা কত ডিগ্রী উতপন্ন করলো ?? মোট ( ৪৩৫*০.৫ = ২১৭.৫ ডিগ্রী )   তাহলে , এই ২১৭.৫ ডিগ্রী কথাটার  মানে আসলে কি দাড়ালো ??

 এর মানে হলো -- সেই ১২ টার কাটা থেকে , একদম ঘন্টার কাটা এখন যেখানে আছে -সেই অব্দি , মোট কত ডিগ্রী , কোণ উতপন্ন হয়েছে - সেই কথা ।।

হুম , এখন যদি সেই ১২ টার কাটা থেকে - মিনিটের কাটা অব্দি কোণ বের করে আগের টার থেকে বিয়োগ দেই , তাহলে কি পাবো ??? বলো তো ???

হুম ঠিকই ধরেছো , তাহলেই আমরা আসলে পাবো --- মিনিটের ও ঘন্টার কাটার মধ্যেকার কোণ ।। এটাই আমরা করবো । তাহলে চলো , মিনিটের কাটা ,কত কোণ উতপন্ন করে ? সেটা বের করে আসি ।।

মিনিটের কাটা , পুরো ৬০ মিনিটে ঘড়িতে এক রাউন্ড সমপন্ন করে ( ৩৬০ ডিগ্রী ) উতপন্ন করে । 

তাহলে ,  মিনিটের কাটা  ৬০  মিনিটে   উতপন্ন  করে  মোট    ৩৬০ ডিগ্রী

               মিনিটের কাটা  ১  মিনিটে   উতপন্ন  করে  মোট    ৩৬০/৬০=৬ ডিগ্রী

তাহলে , আমাদের এইখানে মিনিটের কাটা মোট উতপন্ন করেছে ( ১৫ *৬)=৯০ ডিগ্রী ।। অর্থাৎ , ১২ টার কাটা থেকে  মিনিটের কাটা অবদি মোট কোণ ৯০ ডিগ্রী । এখন এটা সেই আগের থেকে  বাদ দিলেই  আসল কোণ পেয়ে যাবো , তাহলে চলো - দেখি কতো হয় ???  (২১৭.৫ - ৯০) =১২৭.৫ ডিগ্রী , যা ১৮০ এর চেয়ে ছোট সুতরাং এটাই উত্তর .  ।

অনেক প্যাঁচাল হইলো - এবার কোড দেখি চলো ------

#include<stdio.h>
#include<math.h>

int main()
    {
         double min,hour,angl,hourangle,minuteangle;
          while(scanf("%lf:%lf",&hour,&min)==2)
          {
              if((hour==0)&&(min==0))
              break;
             hourangle=(hour*60+min)*0.5;
             minuteangle=min*6;
             angl=(hourangle-minuteangle);
              if(angl<0)
               angl=angl*(-1);

              if (angl>180)
              angl=360-angl;

              printf("%.3lf\n",angl);
          }
    }



DCP-20: Back to School Devskil Only Solution In C#

https://www.devskill.com/CodingProblems/ViewProblem/20

using System; 

 public class Exercise8 


     public static void Main()
   
     {

  
   int t=Convert.ToInt32(Console.ReadLine());

   for(int i=1;i<=t;i++){
       string s=Console.ReadLine();
       string[] values=s.Split(' ');
       double Cx=double.Parse(values[0]);
       double Cy=double.Parse(values[1]);
       double R=double.Parse(values[2]);
       double Px=double.Parse(values[3]);
       double Py=double.Parse(values[4]);
       double ds=((Cx-Px)*(Cx-Px))+((Cy-Py)*(Cy-Py));
       double d=Math.Pow(ds,0.5);
       if(d<R)
       {
           Console.WriteLine("Case "+i+": Inside");
       }
       else if(d<=R)
       {
           Console.WriteLine("Case "+i+": OnCircle");
       }
       else{
        Console.WriteLine("Case "+i+": Outside");
   
     }
   }
     }

}

DCP-14: Box Devskill Problem Only Solution In C#

https://www.devskill.com/CodingProblems/ViewProblem/14

using System; 

 public class Exercise8 


     public static void Main()
   
     {
   

        int T=Convert.ToInt32(Console.ReadLine());

        for(int i=0;i<T;i++){
           
            string s=Console.ReadLine();
            string[] values=s.Split(' ');
            double a=double.Parse(values[0]);
            double b=double.Parse(values[1]);
            double c=double.Parse(values[2]);
           
            double r=(a*a)+(b*b)+(c*c);
           
            double ans=Math.Pow(r,0.5);

            Console.WriteLine(ans.ToString("0.00"));
        }
   
     }

}

Despacio Air In Bus Toph Problem Solution & Logic

https://toph.co/p/despacio-air-in-bus


এই ছবি'র দিকে লক্ষ করো , এখানে একটা ফ্রেমে --- ২টা জানালা আছে , লেংথ যাদের সমান । । এখন ,
এই ফ্রেমের প্রস্থ  W  দেয়া আছে , এবং দৈর্ঘ্য   L  দেয়া আছে এবং , একটা জানালার প্রস্থটুকু  D  দেয়া আছে  || 

তোমায় বলতে হবে , জানালা যদি সমানভাবে খোলা রাখতে চায় তাহলে , জানালার বাম পাশের জন ও ডান পাশের জন কতটুকু করে অংশ পাবে ????   তাহলে , ছবি দেখেই তুমি বুঝতে পারছো যে ---

ফ্রেমের মোট প্রস্থ থেকে যদি -- জানালার প্রস্থটুকু বাদ দেই , তাহলে যে অংশটুকু পাবো , সেটা হলো জানালা খোলা রাখলে , ডান ও বাম পাশের মোট অংশ , এখন আমরা যদি একে ২ দিয়ে ভাগ দিয়ে দেই , তাহলেই কিন্তু ---- যে কোনো এক পাশের প্রস্থ পেয়ে যাবো , তাই না ??  আর , তারপর দৈর্ঘ্য   L দিয়ে গুণ করলেই কিন্তু , ক্ষেত্রফল পেয়ে যাবো ওই অংশের \\\ 

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




#include<bits/stdc++.h>

using namespace std;

int main()
{
    int t;
    double l,w,d,r;
    cin>>t;
    int i=1;

    while(t--)  {
           
        cin>>l>>w>>d;

        r=((w-d)/2)*l;

        printf("Case %d: %0.2lf\n",i,r);
        i++;
    }
    return 0;
}




The Boat Filled With Love Toph Problem Solution & Logic


 
 
 https://toph.co/p/the-boat-filled-with-love
 
 
 বন্যা দুরগতদের জন্য আয়োজিত একটা কনটেস্ট ছিলো , যাই হোক ---- খুবই খুবই সহজ একটা  প্রোবলেম 
এখানে , তোনায় ইনপুট -এ একটা সংখ্যা দেয় আথাকবে , তোমায় 
 
"We Love You. We "n" Are Here For You." 
 
এই কথাটা লিখতে হবে , আর n এর জায়গায় ইনপুট-এ দেয়া মান প্রকাশ করতে হবে 
।   চলো , কোড দেখে আসি এবার -----------------
 
 
 
#include<bits/stdc++.h>

using namespace std;

int main()

{
    int n;
    cin>>n;
    cout<<"We Love You. We "<<n<<" Are Here For You."<<endl;
}

Friday, August 25, 2017

1866 Bill URI Problem Only Solution In C#

using System; 
 class Exercise8 

    static void Main()
   
    {
       
    int a=Convert.ToInt32(Console.ReadLine());
   
    for(int b=1; b<=a; b++)
   
    {
        int c=Convert.ToInt32(Console.ReadLine());
       
        if(c%2==0)
            Console.WriteLine("0");
        else
            Console.WriteLine("1");
    }
   
    }

}

1963 The Motion Picture URI Problem Only Solution In C#

using System; 
 class Exercise8 

    static void Main()
   
    {
    string s=Console.ReadLine();
    string[] values=s.Split(' ');
    double A=double.Parse(values[0]);
    double B=double.Parse(values[1]);
    double c=(B-A);
    double d=(c/A)*100.0;
    Console.WriteLine(d.ToString("0.00")+"%");
    }

}

2006 Identifying Tea URI Problem Only Solution In C#

using System; 
 class Exercise8 

    static void Main()
   
    {
       int T=Convert.ToInt32(Console.ReadLine());
       string s=Console.ReadLine();
       string[] values=s.Split(' ');
       int count=0;
       int A=int.Parse(values[0]);
       if(A==T)
       {
           count++;
       }
       int B=int.Parse(values[1]);
       if(B==T)
       {
           count++;
       }
       int C=int.Parse(values[2]);
       if(C==T)
       {
           count++;
       }
       int D=int.Parse(values[3]);
       if(D==T)
       {
           count++;
       }
       int E=int.Parse(values[4]);
       if(E==T)
       {
           count++;
       }
       Console.WriteLine(count);
    }

}

2160 Name at Form URI Problem Only Solution In C#


using System; 

 class Exercise8 

    static void Main()
{
   
   
        string s=Console.ReadLine();
        int l=s.Length;
        if(l>80)
        {
            Console.WriteLine("NO");
        }
        else
        {
            Console.WriteLine("YES");
        }
}

}

Thursday, August 24, 2017

10107 - What is the Median? Uva Problem Solution & Logic


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


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

    ১ , ৫ , ৩ , ৪ , ৭  ।। তাহলে , প্রথমে আমরা ছোট থেকে বড় আকারে সাজিয়ে নেই ।।
তাহলে , সাজিয়ে পাবো -- ১ , ৩ , ৪ , ৫ , ৭ । এখন যেহেতু , এখানে - বিজোড় সংখ্যক সংখ্যা আছে ,তাহলে  একদম  মাঝের    ৪ ই হবে , মধ্যক । কিন্তু , যদি - থাকতো  ১ , ৩ , ৪ , ৫ , ৭ , ৯ তাহলে ????
এখানে তো - মাঝে বলতে কিছু নেই     । ।   সেইজন্যই ,  মাঝের দুইটা সংখ্যা  ৪  ও  ৫  নিয়ে এদের এভারেজ করলে , উত্তর পেয়ে যাবো । চলো , কোড দেখে নেই এবং বিশ্লেষণ বোঝার ট্রাই করি ।


#include<iostream>
#include<algorithm>

using namespace std;

int main()

{
    long long ar[100000],n,i=0,l;

    while(cin>>n)

    {
               ar[i]=n;

            sort(ar,ar+i+1);

        if(i%2==0)
            cout<<ar[i/2]<<endl;

        else

        {
            l=ar[i/2]+ar[i/2+1];
            cout<<l/2<<endl;
        }

        i++;
    }

return 0;

}







প্রথমে , i=0 ।। তাহলে , ইনপুটে যদি দেই - 1 ,  তাহলে ar[0]= 1 ।

sort(ar,ar+i+1) = sort(ar,ar+0+1) = sort (ar,ar+1) ,অ্যারের প্রথম ১ টা মান সর্ট করবে , অ্যারে যা ছিলো তাই আছে  ar[0]= 1।

  if(i%2==0)  এই শর্ত পূরণ করে , প্রিন্ট করবে  ar[i/2] = ar[0/2] = ar[0] = 1  && i=0 বেড়ে i=1 হয়ে গেলো   |

আবার ইনপুট দিলাম , ar[1] = 3  | |  সুতরাং , অ্যারে'টি  দাড়ালো  ar[0]= 1,ar[1] = 3 ।।

sort(ar,ar+i+1) = sort(ar,ar+1+1) = sort (ar,ar+2) , অ্যারের প্রথম ২ টা মান সর্ট করবে , যা ছিলো - তাই থাকবে , কারণ সর্ট অবস্থায়ই আছে , অ্যারে ।

if(i%2==0)  এই শর্ত পূরণ হয় নি , কারণ  i=1|  সুতরাং , ar[i/2]+ar[i/2+1] = ar[0.5] + ar [1.5]= ar[0] +ar[1] = 1+3 = 4 , সুতরাং প্রিন্ট করবে ---  4/2 = 2 | |   [ বিঃদ্রঃ - (i/2) = 0.5  হলেও i কে int  হিসেবে ডিক্লেয়ার করা হয়েছে , এছাড়াও index  কখনো fraction হতে পারে না , বিধায় 0.5 & 1.5 কে ধরে নেওয়া হয়  0   ]

আশা করি , বাকি টুকু একটু কষ্ট করলেই খুব সহজেই বুঝা যাবে ...

458 - The Decoder Uva Problem Solution & Logic

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

খুবই সহজ একটা সমস্যা , ASCII CODE  নিয়ে ধারণা থাকলে , খুব সহজেই বিষয়টি বুঝে ফেলার কথা ।। কারণ , আমরা যদি একটা ইনপুট এবং আউটপুট এর দিকে লক্ষ করি , তাহলে লক্ষ করতে পারি কি ??
চলো , দেখে আসি -------

1JKJ'pz'{ol'{yhklthyr'vm'{ol'Jvu{yvs'Kh{h'Jvywvyh{pvu5

 *CDC is the trademark of the Control Data Corporation.

 এখানে ,  1  এর যায়গায়  *  বসিয়েছি -- এটা না হয় আপাতত বাদই দিলাম , আগে আমরা অক্ষর নিয়ে চিন্তা করি , তাহলে সুবিধা হয় ।   J এর জায়গায়  C   &    K এর জায়গায়  D  বসিয়েছি , তাই না ??
দেখি তো , কোনো কিছু বোঝা যায় কি না ?? হুম , আশা করি - ধরতে পেরেছো  ।।  J এর চেয়ে ৭ অক্ষর পিছিয়ে   C  ও  K এর চেয়ে ৭ অক্ষর পিছিয়ে   D পাওয়া যায় ।।   

অনুরুপ ভাবে , আমরা যে * চিহ্ন বসিয়েছি , সেটার ASCII CODE  ,42  | অপরদিকে , 1 এর ASCII CODE, 49 ।।     কি , কিছু বুঝতে পারছো ??? 

#include<bits/stdc++.h>

using namespace std;

int main()

{
    int n=49;
    printf("%c",n);
}

এটা রান করলেই বুঝতে পারবে , 1 এর ASCII CODE, 49 ||  যাই হোক , তাহলে তুমি বুঝতে পারছো - এখানেও পারথক্য  7 ( 49 - 42 )  । । তাহলে আর কি , চলো - কোড দেখে ফেলি ------
 প্রথমে আমরা স্ট্রিং এর এক একটা ক্যারেক্টার এর অ্যাসকি কোড  একটা ইন্টিজার এর মধ্যে নিয়ে ,
৭ করে কমিয়ে সেটাকে আবার একটা ক্যারেক্টার-এ নিয়ে প্রিন্ট করে যাবো ----------



#include<bits/stdc++.h>

using namespace std;

int main()

{

    int l;

    string s;

    char c;

    int n;

    while(cin>>s)

    {
        l=s.size();

        for(int i=0;i<l;i++)
        {
            n=s[i];
            c=n-7;
            cout<<c;
        }
        cout<<endl;
    }

}