Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use integer;
- use strict;
- # k = 96666, za okolo 1 min s -O2, 2 min plain na C
- my $k = $ARGV[0] or die "usage: $0 number\n";
- my @sig = qw( * + - );
- my $i = 2;
- while( $i++ )
- {
- my @op = ( 0 );
- my $t = 0;
- while(4)
- {
- $t++;
- inc_ops( \@op, $i - 1 );
- last if $op[ $i - 1 ] > 0;
- my $ev = '1';
- $ev .= $sig[ $op[ $_ - 2 ] ] . $_ for( 2 .. $i );
- my $res;
- eval "\$res=$ev";
- #print "ev: $ev=$res\n";
- die "FOUND($t): $ev==$k\n" if $res == $k;
- }
- }
- sub inc_ops
- {
- my $ar = $_[0];
- my $c = 1;
- for my $i ( 0 .. $_[1] )
- {
- $ar->[$i] = $ar->[$i] + $c;
- if( $ar->[$i] > 2 )
- {
- $c = 1;
- $ar->[$i] = 0;
- }
- else
- {
- $c = 0;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement