TopCoder problem "ChildlessNumbers" used in SRM 473 (Division II Level Three)



Problem Statement

    

Let D(X) denote the sum of digits of the positive integer X. For example, D(4007) = 4 + 0 + 0 + 7 = 11.

Take any positive integer X, and let Y = X / D(X). If Y is an integer, we say that Y is the parent of X (and that X is a child of Y). For example, if X=12 then X / D(X) = 12 / (1+2) = 4, hence 4 is the parent of 12.

Note that multiple numbers can have the same parent. For example, 4 is also the parent of 36, as 36/(3+6) = 36/9 = 4.

We say that a number Y is childless if there is no positive integer X such that Y is the parent of X.

You are given two ints A and B. Find and return the count of all childless numbers that lie between A and B, inclusive.

 

Definition

    
Class:ChildlessNumbers
Method:howMany
Parameters:int, int
Returns:int
Method signature:int howMany(int A, int B)
(be sure your method is public)
    
 

Constraints

-A will be between 1 and 1,000,000,000, inclusive.
-B will be between A and 1,000,000,000, inclusive.
-B-A will be between 0 and 10,000, inclusive.
 

Examples

0)
    
4
7
Returns: 0
Each of the numbers {4,5,6,7} has at least one child. For example, 54 / (5+4) = 6, hence 6 is not childless.
1)
    
37
37
Returns: 0
E.g., 333 / (3+3+3) = 37.
2)
    
61
65
Returns: 3
In this range there are three childless numbers: 62, 63, and 65. For the other two we have 732 / (7+3+2) = 732/12 = 61 and 320 / (3+2+0) = 320/5 = 64.
3)
    
275
300
Returns: 1
The only childless number in this range is 276.

Problem url:

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

Problem stats url:

http://www.topcoder.com/tc?module=ProblemDetail&rd=14155&pm=10978

Writer:

misof

Testers:

PabloGilberto , bmerry , ivan_metelsky

Problem categories:

Brute Force, Math, Simple Search, Iteration