TopCoder problem "ProdCalc" used in TCHS SRM 28 (Division I Level Two)



Problem Statement

    You have a calculator that can only handle numbers with up to d digits. Initially, the number shown on the screen is 1. You must perform exactly op multiplication operations. Each operation multiplies the number on the screen by a digit between 2 and 9, inclusive. The result of each operation must be a number with d or less digits. Return the largest number that can be displayed on the screen after op operations. If there is no way to perform op operations without overflowing the calculator, return -1.
 

Definition

    
Class:ProdCalc
Method:highest
Parameters:int, int
Returns:long
Method signature:long highest(int d, int op)
(be sure your method is public)
    
 

Constraints

-d will be between 2 and 8, inclusive.
-op will be between 0 and 30, inclusive.
 

Examples

0)
    
4
3
Returns: 729
The calculator can store up to 4 digits. With 3 multiplications, we can obtain at most 729, by using digit 9 every time: 1 * 9 * 9 * 9 = 729.
1)
    
8
0
Returns: 1
No multiplications can be performed.
2)
    
2
3
Returns: 98
The storage is limited to 2 digits. The highest number that can be shown on screen after 3 multiplications is 98 (2 * 7 * 7).
3)
    
8
10
Returns: 99574272
4)
    
8
20
Returns: 99532800
5)
    
8
30
Returns: -1
Even if we would only use digit 2 every time, 2^30 has more than 8 digits and overflows the calculator.
6)
    
2
6
Returns: 96
7)
    
3
1
Returns: 9

Problem url:

http://www.topcoder.com/stat?c=problem_statement&pm=7318

Problem stats url:

http://www.topcoder.com/tc?module=ProblemDetail&rd=10652&pm=7318

Writer:

supernova

Testers:

PabloGilberto , brett1479 , Olexiy

Problem categories:

Simple Math, Simulation