CCC '00 J2 - 9966

View as PDF

Submit solution

Points: 3
Time limit: 1.0s
Memory limit: 16M
C# 32M

Problem type
Canadian Computing Competition: 2000 Stage 1, Junior #2

The digits 0, 1, and 8 look much the same if rotated 180 degrees on the page (turned upside down). Also, the digit 6 looks much like a 9, and vice versa, when rotated 180 degrees on the page. A multi-digit number may also look like itself when rotated on the page; for example 9966 and 10\,801 do, but 999 and 1234 do not.

You are to write a program to count how many numbers from a given interval look like themselves when rotated 180 degrees on the page. For example, in the interval [1 \dots 100] there are six: 1, 8, 11, 69, 88, and 96.

Your program should take as input two integers, m and n, which define the interval to be checked, 1 \le m \le n \le 32\,000. The output from your program is the number of rotatable numbers in the interval.

You may assume that all input is valid.

Sample Input


Sample Output



  • 3
    Korjwist  commented on Jan. 8, 2020, 7:14 p.m. edited

    My solution worked but it's way above the memory limit... How would one approach to reduce memory?

    • 2
      c  commented on Jan. 9, 2020, 12:16 a.m. edit 2

      In Java, the memory displayed is the total memory used by Java itself and your program. However, the memory limit is calculated internally based on what your program actually uses. Java itself takes around 24 megabytes for just "Hello, World!" If you had actually went over the memory limit, you would receive an MLE verdict.

  • 6
    Mark123  commented on Aug. 28, 2019, 6:26 p.m.

    What are the second, third and fourth test conditions? My code seems to work fine for any number I put in.

    • 12
      Tzak  commented on Aug. 28, 2019, 7:33 p.m. edited

      Try the following test case:


      The expected output is: 1

      • 7
        Mark123  commented on Aug. 28, 2019, 11:06 p.m.

        ty very much! I forgot 0 turned upside down is also a 0 smh...

  • 6
    Dingledooper  commented on July 5, 2019, 4:31 p.m. edit 5

    Right now, your for loop condition (the string length) changes every iteration, when you really want it to be static. You can have a temporary variable to store the condition so it doesn't change @yahashim_coding. P.S. can mods move this comment down to Re:

  • 0
    yhashim_coding  commented on July 4, 2019, 4:16 p.m.

    I'm getting WA for the third and fourth test cases. Are there any conditions (my if/else statements) I missed (or applied to the wrong things)?

    • 1
      Sivart_Nap  commented on Sept. 27, 2020, 10:21 p.m.

      So am I, im not sure why though.

    • -1
      Dingledooper  commented on July 4, 2019, 5:35 p.m. edited

      At this for loop: for (int i = 0; i < aString.length()/2; i++){, the condition checks for the length of the string after every iteration, even if its size is changed.

      • 0
        yhashim_coding  commented on July 5, 2019, 4:10 p.m.

        Oh, I see. Is it possible to make it so that the for loop's condition is dynamic (changes each time)? As you can see in my code, it depends on the string shrinking and it's similar to recursion (although I think it's more simple). Is the only other way I can do it with this approach be using a recursive method?

  • -4
    Mackrel  commented on June 17, 2019, 12:40 p.m.

    Does anyone know what numbers the judge tests for? I'm getting the first 2 correct but not the last 3, and I want to know what I'm supposed to be getting in order to fix my program.

    • 1
      Pleedoh  commented on June 17, 2019, 1:45 p.m.

      Your solution looks quite a bit over complicated my friend. Try to break it down into simpler conditions and test for each one.