use strict; use PDL::LiteF; use PDL::Primitive; use PDL::Reduce; use PDL::Types; use integer; my ($ans, $total, $total2, $sum, $num, $ones, $zeros); my $shifts = long ( 0, 1, 1 << 1, 1 << 2, 1 << 3, 1 << 4, 1 << 5, 1 << 6, 1 << 7, 1 << 8, 1 << 9, 1 << 10, 1 << 11, 1 << 12, 1 << 13, 1 << 14, 1 << 15, 1 << 16, 1 << 17, 1 << 18, 1 << 19, 1 << 20, 1 << 21, 1 << 22, 1 << 23 ); $ans = 0; for my $num (0 .. 16777216) { $sum = sum(which($shifts & $num)); $total = 2*$sum - 300; $ans++ if $total == 0; } print "$ans\n"; #### use Inline C; print "answer is ", bitlevels(), "\n"; __END__ __C__ /* begin c++ code */ /* #include */ /* using namespace std; */ int bitlevels() { unsigned int ans=0; int num, total, i; unsigned int shift; for(num=0;num<16777216;++num) { total=0; shift=1; for(i=1;i<=24;++i) { if(num & shift) { total+=i; } else { total-=i; } shift<<=1; } if(total==0) ++ans; } return ans; } /* end c++ code */