Header Ads

Header ADS

Light OJ Solution Algorithm

 Author: Md.Fardin Jaman Aranyak

1000 - Greetings from LightOJ


You are one of the most talented programmers and like to solve challenging problems. And my task is to make your life a bit complex by setting some easy looking hard brain storming problems such that you can sharpen your skills by practicing here. So, I wrote a code which shows a message like the following line:

Greetings from LightOJ

After that the code will select a random problem for you from my problems database based on your previously solved problems, your skills and your weaknesses. But while I was coding for implementing this great idea, I found that, all of my problems are scattered in 2 computers. So, I have to merge them before running my code.

Now you are given the number of problems in each of the computers, you have to find the total number of problems. You can safely assume that no problem is stored in multiple computers. So, all the problems are distinct.

Input

Input starts with an integer T (≤ 125), denoting the number of test cases.

Each case starts with a line containing two integers a and ba denotes the number of problems in the first computer and b denotes the number of problems in the second computer. You can safely assume that a and b will be non-negative and not greater than 10.

Output

For each case, print the case number and the total number of problems. See the samples for exact formatting.

Sample Input

Output for Sample Input

2

1 7

9 8

Case 1: 8

Case 2: 17


 এখানে বলা হয়েছে যে, ২ টি কম্পিউটার এর মধ্যে কিছু সমস্যার নমুনা সেভ করা আছে। আমাদেরকে শুধুমাত্র এদের যোগফল বের করতে হবে।  

$so,what we have to do is simple print sum of total distinct problem. sum = a + b

Algorithm: simple input output 

1. input term 

2. using a loop count term. 0<i<term 

2.input two integer value  and calculate sum of two number.

3.print result.

4.repeat from 2 to 3.

sample code :

-------------------------------------------------------------------------------------------------------------------------------------

int term,a,b,sum;

    scanf("%d",&term); //step 1

    int i;

    for(i=0;i<term;i++){  // step 2

        scanf("%d%d",&a,&b);  // step 3

        sum=a+b;        // step 3 

        printf("Case %d: %d\n",i+1,sum);  //step 4 

----------------------------------------------------------------------------------------------------------------------------


1001 - Opposite Task

This problem gives you a flavor the concept of special judge. That means the judge is smart enough to verify your code even though it may print different results. In this problem you are asked to find the opposite task of the previous problem.

To be specific, I have two computers where I stored my problems. Now I know the total number of problems is n. And there are no duplicate problems and there can be at most 10 problems in each computer. You have to find the number of problems in each of the computers.

Since there can be multiple solutions. Any valid solution will do.

Input

Input starts with an integer T (≤ 25), denoting the number of test cases.

Each case starts with a line containing an integer n (0 ≤ n ≤ 20) denoting the total number of problems.

Output

For each case, print the number of problems stored in each computer in a single line. A single space should separate the non-negative integers.

Sample Input

Output for Sample Input

3

10

7

7

0 10

0 7

1 6


এখানে যেটা বলা হইছে যে টোটাল n সংখক প্রবলেম  কে ইনপুট নিতে হবে। তার পর সেই n সংখক প্রবলেম  কে  ২টি কম্পিউটার এর মধ্যে ভাগ করে দিতে হবে। প্রত্যেক  কম্পিউটার ১০ টির বেশি প্রবলেম স্টোর করে রাখতে পারবে না। [১]যেহেতু একটি কম্পিউটার ১০ টির বেশি রাখতে পারবেনা তাই n এর মান সর্বোচ্চ ২০ হতে পারে। [২]আবার n এর মান ০ হতে পারে। ১ম ক্ষত্রে আমরা যেটা করতে পারি তা হল n=২০ হলে ১০ ১০ প্রিন্ট করা। আর ২ য় ক্ষত্রে আমরা ০ ০ প্রিন্ট করব। [৩]  n  এর মান মান ১০ এর নিচে হলে কি করতে পারি। ২ দিয়ে ভাগ?! এখানে একটি প্রবলেম আছে।  n =১০ রিপিট করলে বার বার ৫ ৫ প্রিট করবে আবার বেজোড় সংখা কে ত আর ২ দিয়ে নিঃশেষে ভাগ করা সম্ভব নয়। ত আমরা যেটা করতে পারি তা হল ১ম  এ  একটি কম্পিউটার এ ০ রেখে আপরটিতে  n  রাখতে পারি।এখেনে বলা নেই যে সমান ভাগে ভাগ করতে হবে। আর এটও বলা নেই যে  এর মান ০ হতে পারবেনা। এর পর  n  সংখাটির frequency  অ্যারে তে স্টোর করে রাখেতে পারি মানে n=১০ হলে ১০ তম ইনডেক্সে ১ ইনপুট করব আবার n=১০ হলে ১০ তম ইনডেক্সে ২ ইনপুট করব। ত  একটি কম্পিউটারে আমরা (১০-২)=৮ আরেক কম্পিউটারে আমরা ২ রাখতে পারি। এতে n সংখাটি জোড় বেজোড় হলে কোন প্রব্লেম হবে না। n এর মান ১০ এর  বেশি হলে কি হবে। নিয়ম  একই তবে  একটু পরিবতন করতে  হবে। কারন  প্রত্যেক  কম্পিউটার ১০ টির বেশি প্রবলেম স্টোর করে রাখতে পারবে না। n=১৫ হলে ০, ১৫ প্রিন্ট করলে এটা ভুল হবে। ত আমরা যা করব তা হল answer =|(১০-frequency)-n|, (১০-frequency) । 
।(১০-০)-১৫।=৫ , (১০-০)=১০, frequency=০ আবার n=১৫ হলে ।(১০-১)-১৫।=৬ , (১০-১)=৯, frequency=১। 

এবার নিজে নিজে করার চেষ্টা কর।নিচে নমুনা কোড টি দখতে পার।

"programmers never died" said by unknown person 

 Algorithm:
number will divide as : i:n-i; i=1,2,3,4.........................................term 
tips: input "problem" will be the index no of  an array and the default value will be zero. value will increase one if the "problem" repeat. 
 step 1:input term;
step 2: check the term and increase one ;
step 3: input "problem";
step 4: if problem equal to zero print zero space zero and new line ;
step 5: if problem equal to twenty print   ten space ten and new line;
step 6: if problem less than and equal ten print array[problem], and |array[problem]-problem | and new line; 
step 7: increase array[problem] one. 
step 8: if problem less than 20 print |10-array[problme]| and |10 - array[problme]-problme|  with new line;
step 9: repeat step 7;
step 10: repeat step 4 to step 10;  

-----------------------------------------------------------------------------------------------------------------------------

code:
int term,array[50]={0},problem,temp;
    scanf("%d",&term);
    int i;
    for(i=0;i<term;i++){
        scanf("%d",&problem);
        if(problem==0){

            printf("0 0\n");
        }
        else if(problem==20){

            printf("10 10\n");
        }
        else if(problem<=10){

            printf("%d %d\n",array[problem],abs(problem-array[problem]));// i:n-i where i=0,1,-----
            array[problem]=array[problem]+1;
        }
        else{
                temp=10-array[problem];
                printf("%d %d\n",temp,abs(temp-problem));
                array[problem]=array[problem]+1;

        }
    }
    return 0;
-----------------------------------------------------------------------------------------------------------------------------
1022 - Circle in Square

A circle is placed perfectly into a square. The term perfectly placed means that each side of the square is touched by the circle, but the circle doesn't have any overlapping part with the square. See the picture below.



Now you are given the radius of the circle. You have to find the area of the shaded region (blue part). Assume that pi = 2 * acos (0.0) (acos means cos inverse).

Input

Input starts with an integer T (≤ 1000), denoting the number of test cases.

Each case contains a floating point number r (0 < r ≤ 1000) denoting the radius of the circle. And you can assume that r contains at most four digits after the decimal point.

Output

For each case, print the case number and the shaded area rounded to two places after the decimal point.

Sample Input

Output for Sample Input

3

20

30.091

87.0921

Case 1: 343.36

Case 2: 777.26

Case 3: 6511.05

Note

This problem doesn't have special judge. So, be careful about precision problems. Better to add a small value to your result to avoid precision problems. For example, add 10-9 to your result.    

Algorithm: Geometry
note to avoid precision problems we need to use double data type.


step one : input term 
step two : check term and input radios of a circle.
step three: find the length of a square.
step three: subtract square area and circle area 
step four : print the subtract with new line 
step five: follow from step two.   

code:
-----------------------------------------------------------------------------------------------------------------------------
int term,i;
double radious,length;
scanf("%d",&term);
for(i=0;i<term;i++){
scanf("%lf",&radious);
length=radious*2;
printf("Case %d: %.2lf\n",i+1,(length*length)-(2*acos(0.0)*radious*radious));

-----------------------------------------------------------------------------------------------------------------------------


No comments

Powered by Blogger.