рдЦреИрд░, рдЙрдореНрдореАрдж рдЕрдм рдХреЗрд╡рд▓ рдЖрдк рдкрд░ рд╣реИ - рдЖрдкрдХреЛ 2063 рдореЗрдВ рд╡рд┐рдЬреНрдЮрд╛рди рдФрд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреА рдЙрдкрд▓рдмреНрдзрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж (рд╕реЛрдорд╡рд╛рд░ рддрдХ) рдПрдХ рдирдИ рдЙрдкрдЧреНрд░рд╣ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╕рдВрд▓рдпрди рд░рд┐рдПрдХреНрдЯрд░реЛрдВ рдФрд░ рд╡рд┐рдирд╛рд╢ рдЗрдВрдЬрдиреЛрдВ рдХреЛ рдХреЙрдореНрдкреИрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЙрдкрдЧреНрд░рд╣ рдкрд░ рд╕рд╡рд╛рд░ - рдЕрдм рд╡реЗ рдкреГрдереНрд╡реА рдХреЗ рдирд┐рдХрдЯ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рддрдп рд╣реЛ рдЧрдП рд╣реИрдВ, рдЕрдм рдХреЛрдИ рднреА рдХрдХреНрд╖рд╛ рдирд╣реАрдВ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдкрдВрдЪрд╛рдВрдЧ рдФрд░ рдкрдВрдЪрд╛рдВрдЧ (рдЙрдкрдЧреНрд░рд╣ рдХрдХреНрд╖рд╛ рдкреИрд░рд╛рдореАрдЯрд░) рдХреЛ рдЕрдм рдЙрдкрдЧреНрд░рд╣ рд╕реЗ рдкреГрдереНрд╡реА рдкрд░ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
2063 рдореЗрдВ рдЧреНрд▓реЛрдирд╛рд╕ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд
рдмрд╛рдд рджреЛрдпрдо рджрд░реНрдЬреЗ рдХреЗ рд╡рд┐рдорд╛рди рдкрд░ рд╣реЛ рд░рд╣реА рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдореВрд▓ рд╕реЗ 6378 рдХрд┐рдореА рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред рдЙрдкрдЧреНрд░рд╣ 10 рд╣рдЬрд╛рд░ рд╕реЗ 20 рд╣рдЬрд╛рд░ рдХрд┐рдореА рдХреА рджреВрд░реА рдкрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдХреЗрдВрджреНрд░ рд╕реЗ рджреВрд░ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рддрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдЧреНрд░рд╣ 1 рдореЗрдЧрд╛рдмрд┐рдЯреНрд╕ (рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдорд┐рд▓рд┐рдпрди рдмрд┐рдЯреНрд╕) рдХреА рд╕рдВрдЪрд░рдг рдЧрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдиреБрдХреНрд░рдо рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдХреЗрдд рд╣рдореЗрдВ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 10 рдорд┐рд▓рд┐рдпрди рдирдореВрдиреЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдЧреНрд░рд╣ рдЕрдкрдиреА рдЕрд▓рдЧ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдПрдХ рд╕рдВрдХреЗрдд рдкреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ - рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдиреБрдХреНрд░рдо рд╣рд░ рд╕реЗрдХрдВрдб рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдкрдЧреНрд░рд╣реЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдПрдХ рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЬрдореАрди рдкрд░ рдПрдХ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЙрдкрдЧреНрд░рд╣реЛрдВ рд╕реЗ рд░рд┐рд╕реАрд╡рд░ рддрдХ рдХреА рджреВрд░реА рдЕрд▓рдЧ рд╣реИ - рдкреНрд░рдХрд╛рд╢ рдХреА рдЧрддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣рдореЗрдВ рдПрдХ рд╡рд┐рд▓рдВрдмрд┐рдд рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИ (рдкреНрд░рдХрд╛рд╢ рдХреА рдЧрддрд┐ = 299792458 рдореАрдЯрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб) - рдЯреАред рдИред рдкрд╣рд▓реЗ рд╣рдо рдкрд┐рдЫрд▓реЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ "рдкреВрдВрдЫ" рд▓реЗрддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╡рд░реНрддрдорд╛рди рдХреЗ "рд╕рд┐рд░"ред рдХреЛрдб рдЕрдиреБрдХреНрд░рдо рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдХреЗ рджреЗрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЙрдкрдЧреНрд░рд╣ рд╕реЗ рджреВрд░реА рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХрдИ рдЙрдкрдЧреНрд░рд╣реЛрдВ рдХреА рджреВрд░реА рдЬрд╛рдирдирд╛ - рд╣рдо рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛: рдЦреАрдВрдЪреЗ рдЧрдП рд╡реГрддреНрдд рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рдкреНрд░рдХрд╛рд╢ рдХреА рдЧрддрд┐ рд╕реЗ рдЧреБрдгрд╛ рд╕рдВрдХреЗрдд рджреЗрд░реА рдХреА рдЧрдгрдирд╛ рд╣реИред
рдЙрдкрдЧреНрд░рд╣ рдФрд░ рд░рд┐рд╕реАрд╡рд░ рдЕрднреА рднреА рдЦрдбрд╝реЗ рд╣реИрдВ - рдХреЛрдИ рдбреЙрдкрд▓рд░ рд╢рд┐рдлреНрдЯ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕рд╛рдкреЗрдХреНрд╖ рдкреНрд░рднрд╛рд╡ (рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рд╡рд╛рд▓реЗ рд╕рд╣рд┐рдд) рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛рдиреА рд╕рдордп рдореЗрдВ рдХреЛрдИ рдЪрд╛рд▓ рдирд╣реАрдВ рд╣реИред
рдЗрдирдкреБрдЯ рдкреНрд░рд╛рд░реВрдк
рдбреЗрдЯрд╛ рдорд╛рдирдХ рдЗрдирдкреБрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредрдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ 2 рд╕реЗ 255 рддрдХ рд╕рдВрдЦреНрдпрд╛ рдПрди рд╣реИ: рдЙрдкрдЧреНрд░рд╣реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрди рдЙрдкрдЧреНрд░рд╣реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рд╣реИ: рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ, рдореАрдЯрд░ рдХреЗ рдЙрдкрдЧреНрд░рд╣ рдХрд╛ рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдореВрд▓ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ред
рдЕрдЧрд▓рд╛ - 10 рдорд┐рд▓рд┐рдпрди рдЕрдВрдХ 0 рдпрд╛ 1, рдЬрдореАрди рдкрд░ рдкреНрд░рд╛рдкреНрдд рдЙрдкрдЧреНрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЫрджреНрдо-рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдиреБрдХреНрд░рдоред
рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдиреБрдХреНрд░рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдердо (рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди рд╣реЛрддрд╛ рд╣реИ):
data = md5("3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446"+to_string(pos))
pos тАФ 0 999999. data>'7' тАФ , .
10 , 0 1 10 . .
: ( )
2 -6.83616e+006 1.6126e+007 000000000000000011111111110000000000000000000000000000000000[...] -1.07643e+007 -1.48409e+007 10000000000111111111100000000001111111111111111111111111111111111[...]
тАФ .
, тАФ X Y, , .
, тАФ .
:
-1.81683e+006 -1.74334e+006
/ тАФ : s.14.by/glonass-contest.zip
delta тАФ T тАФ , 100/(delta+10) + 10/(T+1). 5 i7-3820 HT
Java SE 7, . , 20. , , (JNI ).
,
23:59 ( ) 11 contest@14.by, тАФ !:
//@BarsMonster
BarsMonster тАФ HabraHabr ( read-only , )
тАФ 2 BTC,
тАФ 1 BTC,
тАФ 0.5 BTC.
:
, ( ) 1 BTC.
-, read-only , .
, ┬л: -┬╗, тАж - , тАж
!
Update 10.05.2014 2:03: . 64- Java (-Xms10g -Xmx30g). тАФ , .
Update 10.05.2014 10:23: , , ( , 500/).
Update 10.05.2014 13:18: . 1 (3 ). тАФ 3- . .
Update 11.05.2014 18:00: . , - тАФ . . тАФ .
//Might have some OCR errors
<?
$startTime = microtime(true);
set_time_limit(99999999);
ini_set('memory_limit', '-1');
fscan("%d", $n);
$sat = array();
for($i=0;$i<$n;$i++)
{
fscan("%f", $sx);
fscan("%f", $sy);
fscan("%s", $sequence);
$sat[] = array("sx"=>$sx, "sy"=>$sy, "sq" => $sequence);
}
$ref = "";
//Calculate reference sequence
for($i=0;$i<10000000;$i++)
{
$hash = md5("3.1415926535897932384626433832795O28841971693993751O582O9749445923O78164O62862O8998628O34825342117O67982148O865132823O6647O938446".((int)((($i)%1OOOOOOO/1O))));
$ref .= ($hash[0]>'7')?"1":"0";
}
$ref .= $ref;
//Calculate pseudorange
for($i=0;$i<$n;$i++)
{
$sat[$i]["range"] = (10000000.0-intval(strpos($ref, $sat[$i]["sq"])))/10000000.0*299792458.0;//Meters
}
$best = 10E100;
for($x=-7000000;$x<7000000;$x+=2000)
{
for($y=-7000000;$y<7000000;$y+=2000)
{
$delta = 0;
for($i=0;$i<$n;$i++)
$delta += abs($sat[$i]["range"]-sqrt(pow($x-$sat[$i]["sx"],2)+pow($y-$sat[$i]["sy"],2)));
if($delta<$best)
{
$best = $delta;
$bestx = $x;
$besty = $y;
}
}
}
print("$bestx $besty\n);
echo "\n\nExecution time: ".(microtime(true)-$startTime);
?>
Update 11.05.2014 20:11: тАФ . . .
Update 14.05.2014 23:22: .