結果
問題 | No.2847 Birthday Attack |
ユーザー | kotatsugame |
提出日時 | 2024-08-23 21:54:16 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 959 bytes |
コンパイル時間 | 751 ms |
コンパイル使用メモリ | 79,132 KB |
実行使用メモリ | 267,436 KB |
最終ジャッジ日時 | 2024-08-23 21:55:21 |
合計ジャッジ時間 | 59,389 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2,981 ms
265,740 KB |
testcase_01 | AC | 2,945 ms
266,324 KB |
testcase_02 | AC | 2,965 ms
265,468 KB |
testcase_03 | AC | 2,999 ms
266,608 KB |
testcase_04 | TLE | - |
testcase_05 | TLE | - |
testcase_06 | TLE | - |
testcase_07 | TLE | - |
testcase_08 | TLE | - |
testcase_09 | TLE | - |
testcase_10 | TLE | - |
testcase_11 | TLE | - |
testcase_12 | TLE | - |
testcase_13 | TLE | - |
testcase_14 | TLE | - |
testcase_15 | TLE | - |
testcase_16 | TLE | - |
testcase_17 | TLE | - |
コンパイルメッセージ
main.cpp: In function 'int main()': main.cpp:40:17: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17' [-Wc++17-extensions] 40 | for(auto[a,b]:T) | ^
ソースコード
#include<iostream> #include<vector> #include<algorithm> #include<cassert> using namespace std; int gcd(int a,int b) { while(b) { int t=a%b; a=b; b=t; } return a; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); vector<pair<int,int> >T; auto add=[&](int a,int b){ int mxab=max(a,b); for(int k=1;mxab*k<=(int)4e6;k++)T.emplace_back(a*k,b*k); }; for(int m=1;m*m<=(int)6e6;m++) { for(int n=1;n<m;n++) { if(n%2&&m%2)continue; if(gcd(n,m)!=1)continue; add(m*m-n*n,2*m*n); add(2*m*n,m*m-n*n); } } sort(T.begin(),T.end()); T.erase(unique(T.begin(),T.end()),T.end()); int X,Y,M; cin>>X>>Y>>M; long ans=0; for(auto[a,b]:T) { int lx=a+1,rx=X-a; int ly=b+1,ry=Y-b; if(lx>rx||ly>ry)continue; ans+=(long)(rx-lx+1)*(ry-ly+1)%M; if(ans>=M)ans-=M; } ans=ans*2%M; for(int a=1;a+1<=X-a;a++)ans+=(long)(X-a-a-1+1)*Y*2%M; for(int b=1;b+1<=Y-b;b++)ans+=(long)X*(Y-b-b-1+1)*2%M; ans%=M; cout<<ans<<endl; }