TopcoderArchiveVisit Topcoder
SRM5 Nov 2009
SRM 452

IncreasingNumber

Problem statement, definition, constraints, and public examples.

Problem Statement

A positive integer is called Increasing Number if its digits are in non-descending order from left to right in decimal notation. For example, 1234, 111, 58 and 8899 are Increasing Numbers, while 314, 7654 and 2009 are not.

You are given a long digits and an int divisor. Calculate the number of Increasing Numbers that satisfy both of the following conditions and return this number modulo 1,000,000,007.
  • The number contains exactly digits digits in the decimal notation with no leading zeroes.
  • The number is divisible by divisor.

Definition

Class:
IncreasingNumber
Method:
countNumbers
Parameters:
long, int
Returns:
int
Method signature:
int countNumbers(long digits, int divisor)
(be sure your method is public)

Constraints

  • digits will be between 1 and 1,000,000,000,000,000,000 (10^18), inclusive.
  • divisor will be between 1 and 500, inclusive.

Examples

  1. 2
    12
    Returns: 4
    12, 24, 36, and 48 satisfy the conditions.
  2. 3
    111
    Returns: 9
    All 3-digits numbers divisible by 111 are Increasing Numbers.
  3. 452
    10
    Returns: 0
    There is no Increasing Number divisible by 10.
  4. 6
    58
    Returns: 38
Back to all problems