my $n = ...; my $b = ...; my @possibles; my $p = '1'; while ($p <= $n) { push @possibles, ('1' x $p); $p *= $b; } my ($pat) = map qr/$_/, join '|', @possibles; print( "$n: ", ('1' x $n) =~ /^$pat\z/ ?1:0, "\n" );