結果
| 問題 |
No.752 mod数列
|
| コンテスト | |
| ユーザー |
%20
|
| 提出日時 | 2018-03-09 03:22:23 |
| 言語 | Perl (5.40.0) |
| 結果 |
AC
|
| 実行時間 | 385 ms / 2,000 ms |
| コード長 | 606 bytes |
| コンパイル時間 | 317 ms |
| コンパイル使用メモリ | 6,820 KB |
| 実行使用メモリ | 7,424 KB |
| 最終ジャッジ日時 | 2024-10-05 11:04:45 |
| 合計ジャッジ時間 | 8,697 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 31 |
コンパイルメッセージ
Main.pl syntax OK
ソースコード
use integer;
sub tousa{my($a,$d,$n)=@_;
$n*(2*$a+($n-1)*$d)/2
}
($P,$Q)=split$",<>;
$sn=int(sqrt($P));
$tn=$P/($sn+1);
for(1..$sn){
$s[$_]=$s[$_-1]+$P%$_
}
for(1..$tn){
$t[$_]=$t[$_-1]+tousa($P%($P/$_),$_,$P/$_-$P/($_+1))
}
for(1..$Q){
($L,$R)=split$",<>;
$sum=0;
if($P<$L){
$sum=tousa($P,0,$R-$L+1)
}elsif($R<=$sn){
$sum=$s[$R]-$s[$L-1]
}elsif($sn<$L){
$sum=tousa($P%$L,-$P/$L,$P/($P/$L)-$L+1);
$sum+=$t[$P/$L-1]-$t[$P/$R];
$sum+=tousa($P%$R,$P/$R,$R-$P/($P/$R+1))
}else{
$sum=$s[$sn]-$s[$L-1];
$sum+=$t[$tn]-$t[$P/$R];
$sum+=tousa($P%$R,$P/$R,$R-$P/($P/$R+1))
}
print$sum,$/
}
%20