<?php
$PrefArr = array( 5381733, 1308265, 1279594, 2333899, 1023119,
1123891, 1914039, 2916976, 1974255, 1973115,
7266534, 6222666, 13515271, 9126214, 2304264,
1066328, 1154008, 786740, 834930, 2098804,
2031903, 3700305, 7483128, 1815865, 1412916,
2610353, 8839469, 5534800, 1364316, 963579,
573441, 694352, 1921525, 2843990, 1404729,
755733, 976263, 1385262, 728276, 5101556,
832832, 1377187, 1786170, 1166338, 1104069,
1648177, 1433566);
$NeedGiseki = 289;
$L = 1;
$R = max($PrefArr);
while ($L < $R){
$Mid = floor(($L + $R) / 2);
$SumGiseki = 0;
foreach($PrefArr as $EachVal){
$SumGiseki += ceil($EachVal / $Mid);
}
if($SumGiseki == $NeedGiseki){
for($I = 0 ; $I <= count($PrefArr) - 1 ; $I++){
printf("都道府県%02dの議席数は、%02d", $I + 1 , ceil($PrefArr[$I] / $Mid) );
echo PHP_EOL;
}
break;
}
elseif($SumGiseki < $NeedGiseki){
$R = $Mid - 1;
} else {
$L = $Mid + 1;
}
}
都道府県01の議席数は、12 都道府県02の議席数は、03 都道府県03の議席数は、03 都道府県04の議席数は、05 都道府県05の議席数は、03 都道府県06の議席数は、03 都道府県07の議席数は、04 都道府県08の議席数は、07 都道府県09の議席数は、05 都道府県10の議席数は、05 都道府県11の議席数は、16 都道府県12の議席数は、14 都道府県13の議席数は、29 都道府県14の議席数は、20 都道府県15の議席数は、05 都道府県16の議席数は、03 都道府県17の議席数は、03 都道府県18の議席数は、02 都道府県19の議席数は、02 都道府県20の議席数は、05 都道府県21の議席数は、05 都道府県22の議席数は、08 都道府県23の議席数は、16 都道府県24の議席数は、04 都道府県25の議席数は、03 都道府県26の議席数は、06 都道府県27の議席数は、19 都道府県28の議席数は、12 都道府県29の議席数は、03 都道府県30の議席数は、03 都道府県31の議席数は、02 都道府県32の議席数は、02 都道府県33の議席数は、05 都道府県34の議席数は、06 都道府県35の議席数は、03 都道府県36の議席数は、02 都道府県37の議席数は、03 都道府県38の議席数は、03 都道府県39の議席数は、02 都道府県40の議席数は、11 都道府県41の議席数は、02 都道府県42の議席数は、03 都道府県43の議席数は、04 都道府県44の議席数は、03 都道府県45の議席数は、03 都道府県46の議席数は、04 都道府県47の議席数は、03
二分法で解いてます。