Advertisement
Guest User

Untitled

a guest
Dec 9th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.90 KB | None | 0 0
  1. #include <limits.h>
  2. #include <stdio.h>
  3. #include <ctype.h>
  4.  
  5. int is_digit(int c)
  6. {
  7.     return c == 'a' || c == '0' || c == '1';
  8. }
  9.  
  10. void accept_number(int c)
  11. {
  12.     int accum = 0;
  13.     do
  14.     {
  15.         if (accum != INT_MIN)
  16.         {
  17.             int multiplied = accum * 3;
  18.             if (multiplied / 3 == accum)
  19.             {
  20.                 accum = multiplied;
  21.  
  22.                 if (c == 'a')
  23.                     accum -= 1;
  24.                 else if (c == '1')
  25.                     accum = accum == INT_MAX ? INT_MIN : accum + 1;
  26.             }
  27.             else
  28.                 accum = INT_MIN;
  29.         }
  30.     } while ((c = getchar()) != EOF && is_digit(c));
  31.     printf("%d\n", accum);
  32. }
  33.  
  34. int main()
  35. {
  36.     int c;
  37.     while ((c = getchar()) != EOF)
  38.     {
  39.         while (c != EOF && isspace(c))
  40.             c = getchar();
  41.  
  42.         if (is_digit(c))
  43.             accept_number(c);
  44.     }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement