Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <limits.h>
- #include <stdio.h>
- #include <ctype.h>
- int is_digit(int c)
- {
- return c == 'a' || c == '0' || c == '1';
- }
- void accept_number(int c)
- {
- int accum = 0;
- do
- {
- if (accum != INT_MIN)
- {
- int multiplied = accum * 3;
- if (multiplied / 3 == accum)
- {
- accum = multiplied;
- if (c == 'a')
- accum -= 1;
- else if (c == '1')
- accum = accum == INT_MAX ? INT_MIN : accum + 1;
- }
- else
- accum = INT_MIN;
- }
- } while ((c = getchar()) != EOF && is_digit(c));
- printf("%d\n", accum);
- }
- int main()
- {
- int c;
- while ((c = getchar()) != EOF)
- {
- while (c != EOF && isspace(c))
- c = getchar();
- if (is_digit(c))
- accept_number(c);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement