Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <math.h>
- #include <stdio.h>
- using namespace std ;
- string str ;
- int arr[100] , arr2[100] , arr3[100] ; ;
- int main()
- {
- cin>> str ;
- int i , base = 1 , length , length2 , j , sum=0 , sum2=0 , pow , pow2,k=0,f=0,check=0;
- for ( i = 0 ; str[i] == '0' ; i ++ ) {}
- for ( j = 0 ; str[i] != ':' ; i ++ , j ++ )
- {
- if ( str[i] >= 'A' && str[i] <= 'Z' )
- arr[j] = ( str[i] - 'A' ) + 10 ;
- else
- arr[j] = str[i] - '0' ;
- check= check * 10 + arr[j] ;
- if ( arr[j] > base ) base = arr[j] + 1 ;
- }
- length = i ;
- i ++ ;
- for ( ; str[i] == '0' ; i ++ ) {}
- if ( check > 23 || check < 0 ) printf ("0") ;
- else
- {
- check = 0;
- for ( j = 0 ; i < str.size() ; i ++ , j ++ )
- {
- if ( str[i] >= 'A' && str[i] <= 'Z' )
- arr2[j] = ( str[i] - 'A' ) + 10 ;
- else if ( str[i] > '0' && str[i] <= '9' )
- arr2[j] = str[i] - '0' ;
- check= check * 10 + arr[j] ;
- if ( arr2[j] > base ) base = arr2[j] + 1 ;
- }
- length2 = str.size() - ( length+1 ) ;
- if ( check > 59 || check < 0 ) printf ("0") ;
- else
- {
- for ( i = base ; i <= 100 ; i ++ )
- {
- if ( i > 59 )
- {
- f = 1;
- break ;
- }
- pow = 1 , pow2 = 1;
- sum =pow*arr[length-1] , sum2 = pow2*arr2[length-1] ;
- for ( j = length-2 ; j >= 0 ; j -- )
- {
- sum += pow * i * arr[j] ;
- pow = pow * i ;
- }
- for ( j = length2-2 ; j > 0 ; j -- )
- {
- sum2 += pow2 * i * arr2[j] ;
- pow2 = pow2 * i ;
- }
- if ( sum <= 23 && sum >= 0 && sum2 >= 0 && sum2 <= 59 )
- arr3[k++] = i ;
- }
- if ( f == 1 && arr3[58] != 0 ) printf ("-1") ;
- else if ( f == 1 && arr3[0] == 0 ) printf ("0") ;
- else
- {
- for ( i = 0 ; i < k ; i ++ ) printf ("%d ",arr3[i]) ;
- }
- }
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment