Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
for($i=1,$s='00000'.$i,$c=0;$i<=999999;$i++,$s=sprintf('%06s',$i))
($s[0]+$s[1]+$s[2]==$s[3]+$s[4]+$s[5])&&$c++;
echo "Сумма = $c";
$ perl -e 's|(?=.)|$a++%6>2?"+":"-"|ge,$b+=!eval for"0"x6..9x6;print$b' 55252
#!/usr/bin/perl -w
use strict;
my @summa = ();
for my $i ( 0 .. 999 ) {
push @summa, summa($i);
}
for my $i ( 0 .. $#summa ) {
for my $j ( 0 .. $#summa ) {
printf "%03d%03d\n", $i, $j if $summa[$i] == $summa[$j];
}
}
sub summa
{
my $x = shift;
my $s = 0;
while ( $x ) {
$s += $x % 10;
$x = int($x / 10);
}
return $s;
}
#!/usr/bin/perl -w
use strict;
my %summa = ();
for my $i ( 0 .. 999 ) {
push @{ $summa{summa($i)} }, $i;
}
for my $x ( sort { $a <=> $b } keys %summa ) {
my @x = @{ $summa{$x} };
for my $i ( @x ) {
for my $j ( @x ) {
printf "%03d%03d\n", $i, $j;
}
}
}
sub summa
{
my $x = shift;
my $s = 0;
while ( $x ) {
$s += $x % 10;
$x = int($x / 10);
}
return $s;
}
$i=$_,s//+0x/gc,push@{$a[eval]},$i for"000"..9x3;map{for$x(@$_){print"$x$_\n"for@$_}}@as//+0x/gc,$a[eval]++for 0..999;$s+=$_*$_ for@a;print$s
for($i=1000000;$i||die("$c");$s=sprintf("%06s",--$i),$s[0]+$s[1]+$s[2]-$s[3]-$s[4]-$s[5]||@$c++);s|(?=.)|$a++%6>2?"+":"-"|ge,$b+=!eval for"0"x6..9x6;print$b
for($i=1000000;$i||die("$c");$s=sprintf('%06s',--$i),$s[0]+$s[1]+$s[2]-$s[3]-$s[4]-$s[5]or@$c++);
for(;$i<1000;$i++,$s="".$i)$a[$s[0]+$s[1]+$s[2]]++;foreach($a as $i)$k+=$i*$i;echo $k;
Если бы видели результат компиляции вашего кода, то пришли в ужас. У вас пожалуй рекорд по пессимизации кода. А можно было вот так.
import time
tm = time.time()
cnt = 0
for L1 in range(10):
for L2 in range(10):
for L3 in range(10):
for R1 in range(10):
for R2 in range(10):
for R3 in range(10):
if L1+L2+L3==R1+R2+R3:
cnt = cnt+1
#end
#end
#end
#end
#end
#end
#end
print ("cnt = ", cnt, " time = ", time.time() - tm, " sec")#include <stdio.h>
#include <memory.h>
void main()
{
int dynamic_proramming_rules[27], answer = 0; //coz 27 is max sum of nubers in [1..999]
memset(dynamic_proramming_rules,0,sizeof(dynamic_proramming_rules));
for (int i=1; i<=999; ++i) {
++dynamic_proramming_rules[i/100+(i%100/10)+(i%10)-1];
}
for (int i=0; i<27; ++i) {
answer += dynamic_proramming_rules[i] * dynamic_proramming_rules[i];
}
printf("%i", answer);
}SELECT COUNT(T1.R1) AS "Всего счастливых билетов"
FROM
(SELECT 0 R6 UNION
SELECT 1 UNION
SELECT 2 UNION
SELECT 3 UNION
SELECT 4 UNION
SELECT 5 UNION
SELECT 6 UNION
SELECT 7 UNION
SELECT 8 UNION
SELECT 9) `T6`,
(SELECT 0 R5 UNION
SELECT 1 UNION
SELECT 2 UNION
SELECT 3 UNION
SELECT 4 UNION
SELECT 5 UNION
SELECT 6 UNION
SELECT 7 UNION
SELECT 8 UNION
SELECT 9) `T5`,
(SELECT 0 R4 UNION
SELECT 1 UNION
SELECT 2 UNION
SELECT 3 UNION
SELECT 4 UNION
SELECT 5 UNION
SELECT 6 UNION
SELECT 7 UNION
SELECT 8 UNION
SELECT 9) `T4`,
(SELECT 0 R3 UNION
SELECT 1 UNION
SELECT 2 UNION
SELECT 3 UNION
SELECT 4 UNION
SELECT 5 UNION
SELECT 6 UNION
SELECT 7 UNION
SELECT 8 UNION
SELECT 9) `T3`,
(SELECT 0 R2 UNION
SELECT 1 UNION
SELECT 2 UNION
SELECT 3 UNION
SELECT 4 UNION
SELECT 5 UNION
SELECT 6 UNION
SELECT 7 UNION
SELECT 8 UNION
SELECT 9) `T2`,
(SELECT 0 R1 UNION
SELECT 1 UNION
SELECT 2 UNION
SELECT 3 UNION
SELECT 4 UNION
SELECT 5 UNION
SELECT 6 UNION
SELECT 7 UNION
SELECT 8 UNION
SELECT 9) `T1`
WHERE T6.R6+T5.R5+T4.R4=T3.R3+T2.R2+T1.R1;
select count(*) as "Всего счастливых билетов" from (select rownum-1 R6 from dual connect by level <= 10), (select rownum-1 R5 from dual connect by level <= 10), (select rownum-1 R4 from dual connect by level <= 10), (select rownum-1 R3 from dual connect by level <= 10), (select rownum-1 R2 from dual connect by level <= 10), (select rownum-1 R1 from dual connect by level <= 10) where R1+R2+R3=R4+R5+R6;
#include <iostream>
#include <math.h>
double pi = 3.1415926535897932384626433832795028841971693993751;
double f(double arg)
{
return 1/pi * pow(sin(arg*5)/sin(arg/2),6);
}
int _tmain(int argc, _TCHAR* argv[])
{
const int N=15;
double knots[N],values[N];
for(int i=0;i<N;i++)
{
knots[i] = i*pi/N + (i-N/2)*1e-7;
values[i] = f(knots[i]);
}
double result=0;
for(int i=1;i<N;i++)
result+=(values[i]+values[i-1]) / 2 * (knots[i] - knots[i-1]);
std::cout<<result << '\n';
return 0;
}получаем 55252,2 #define _USE_MATH_DEFINES #include <math.h>
#define M_PI 3.14159265358979323846


Посчитал количество билетов типа «встреча» (суммы отличаются на единицу) и «письмо» (отличаются на 2). «Встреча» — 109494 билетов, «письмо» — 106524 билетов. В итоге примерно каждый 4-ый билет привносит немного позитива в нашу жизнь :)
print 0+grep{/(.)(.)(.)(.)(.)(.)/ && $1+$2+$3==$4+$5+$6}'0'x6..1x6
Счастливые билеты