sub only_1_0_in_base_x { my ($num, $base) = @_; if ($num / $base != int($num / $base)) { $num--; return 0 if $num / $base != int($num / $base); } my $exponent = int(log($num) / log($base)); my $max = 0; $max += $base ** $_ for 1 .. $exponent; return 0 if $num > $max; while ($exponent) { my $next = $base ** $exponent; return 1 if $next == $num; $num -= $next if $num > $next; $max -= $next; return 0 if $num > $max; } }