結果
| 問題 |
No.2651 [Cherry 6th Tune B] $\mathbb{C}$omplex комбинат
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-03-01 11:55:38 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 175 ms / 2,500 ms |
| コード長 | 1,088 bytes |
| コンパイル時間 | 1,952 ms |
| コンパイル使用メモリ | 197,208 KB |
| 最終ジャッジ日時 | 2025-02-19 22:12:16 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 39 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
constexpr int MOD=998244353;
namespace Lib{
ll modpow(long long a,int n){
long long ret=1,t=a;
while(n>0){
if(n&1)ret=ret*t%MOD;
t=t*t%MOD;
n/=2;
}
return ret;
}
}
void solve();
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int test_case;
cin>>test_case;
while (test_case--){
solve();
}
}
ll modinv(ll n){
return Lib::modpow(n,MOD-2);
}
void solve(){
int N;
cin>>N;
vector A(N,array<int,2>());
for(auto &i:A)cin>>i[0]>>i[1];
ll p2=0,Rs=0,Is=0;
for(auto i:A){
p2=(p2+i[0]*i[0]+i[1]*i[1])%MOD;
Rs=(Rs+(i[0]*i[0]-i[1]*i[1])*modinv(i[0]*i[0]+i[1]*i[1]))%MOD;
Is=(Is+2*i[0]*i[1]*modinv(i[0]*i[0]+i[1]*i[1]))%MOD;
}
ll ans=0;
for(auto i:A){
ll b=i[0]*i[0]+i[1]*i[1];
ll pr=(i[0]*i[0]-i[1]*i[1])*modinv(b)%MOD,pi=(-2*i[0]*i[1])*modinv(b)%MOD;
ans=(ans+p2*modinv(b)*2)%MOD;
ans=(ans-Rs*pr*2+Is*pi*2)%MOD;
}
ans=(ans+MOD)%MOD;
ans=(ans*((MOD+1)/2))%MOD;
cout<<ans<<'\n';
}