結果
問題 | No.752 mod数列 |
ユーザー |
![]() |
提出日時 | 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,$/ }