This question involves a game with teddy bears. The game starts when you receive
ID: 3579168 • Letter: T
Question
This question involves a game with teddy bears. The game starts when you receive some integer number of bears. You can then give back some bears, but you must follow these rules (where n is the number of bears that you have):
1- If n is even, then you may give back exactly n/2 bears.
2- If n is divisible by 3 or 4, then you may multiply the last two digits of n and give back this many bears. (By the way, the last digit of n is n%10, and the next-to-last digit is ((n% 100)/10).
3- If n is divisible by 5, then you may give back exactly 42 bears.
The goal of the game is to end up with EXACTLY 42 bears.
For example, suppose that you start with 250 bears. Then you could make these moves:
--Start with 250 bears.
--Since 250 is divisible by 5, you may return 42 of the bears, leaving you with 208 bears.
--Since 208 is even, you may return half of the bears, leaving you with 104 bears.
--Since 104 is even, you may return half of the bears, leaving you with 52 bears.
--Since 52 is divisible by 4, you may multiply the last two digits (resulting in 10) and return these 10 bears. This leaves you with 42 bears.
--You have reached the goal!
(in java) Write a recursive method to meet the specification above:
public static boolean bears(int n)
// Postcondition: A true return value means that it is possible to win
// the bear game by starting with n bears. A false return value means that
// it is not possible to win the bear game by starting with n bears.
// Examples:
// bear(250) is true (as shown above)
// bear(42) is true
// bear(84) is true
// bear(53) is false
// bear(41) is false
Hint: To test whether n is even, use the expression ((n % 2) == 0).
Explanation / Answer
import java.io.IOException;
import java .util.Scanner;
public class bear
{
public static void main( string[] args)
{
scanner stdin=new scanner (system.in);
int initial, goal,increment,n;
do
{
initial=intquery(stdin, "number of bears:");
goal=intquery(stdin,"goal number of bears:");
increment=intquery(stdin,"increment for a step:");
n=intquery(stdin,"maximum steps:");
if ((initial<0)||(goal<0)||(increment<0)||(n<0))
system.out.printlm(" parameters must be non-negative");
elseif (bears(initial,goal,increment,n))
system.out.println("goal can be achieved");
else
system.out.println("no goal can be achieved");
}while(query(stdin," do you want to try again"));
public ststic int intquery(scanner input, string prompt)
{
int ans;
do
{
system.out.print(prompt);
try
{
answer=input.nextInt();
return answer;
}
catch(Exception e)
{
system.out.print("Invalid respnse , type integer value");
}
}while(true);
}
public static boolean bears(int initial,int goal,int increment,int n)
{
if (initial==goal)
return true;
elseif (n==42)
return true;
elseif(n<42)
return false;
elseif ((n mod 2==0) || (n mod 3==0)||(n mod ==0)||(n mod 5==0))
if (n mod 2==0)
{
goal= n/2;
}
if((n mod 3==0)|| (n mod 4==0))
{
goal=((n mod 10)*(n mod 100))/10;
}
if((n mod5==0))
{
goal=n-42;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.