bnghtz

sum_n_ad_100__modulus_125_fixed.pl

Sep 8th, 2014
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.08 KB | None | 0 0
  1. #! /usr/bin/perl
  2. use warnings;
  3.  
  4. ################################################################
  5. #  S = (n+1)^100 + (n+2)^100 + (n+3)^100 + ... + (n+k)^100
  6. #  S mod 125 ? 0 ; n,k egész 1 < k < 156
  7. ################################################################
  8. my $StopFirstFind = 1;
  9.  
  10. my ($from, $to) = (2, 155); # mettol meddig menjen k
  11. my ($x, $sum);
  12. my ($min, $max);
  13. my @array = ();
  14.  
  15. foreach my $m ($from .. $to) {
  16.   last if $m > $to;
  17.  
  18.   if (@array) {
  19.     $max = $m if $m > $max;
  20.     $min = $m if $m < $min;
  21.   } else {
  22.     $min = $max = $m;
  23.   }
  24.  
  25.   # 1 # % 1000 is enough 'cause of %125
  26.   # 2 # perl punctionality is within 16-17 numbers
  27.   #   # 1000 ** 5 == e15, so it must be right
  28.   $x = (($m ** 5 % 1000) ** 5 % 1000) ** 4 % 1000;
  29.   push(@array, $x);
  30.  
  31.   $sum = 0;
  32.   map {$sum += ($_ % 1000); } @array;
  33.  
  34.   printf("%3d,%3d  %5d %3d %3d\n", $min, $max, $sum ,$sum % 1000, $sum % 125);
  35.  
  36.   if (0 == $sum % 125) {
  37.     print "Haha! i got you!\n\n";
  38.     unless (($min % 5 == 0) && ($max == $min)) {
  39.       sleep(4);
  40.       last if $StopFirstFind;
  41.     }
  42.   }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment