結果
問題 | No.2847 Birthday Attack |
ユーザー | kotatsugame |
提出日時 | 2024-08-23 21:55:35 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 910 bytes |
コンパイル時間 | 564 ms |
コンパイル使用メモリ | 75,804 KB |
実行使用メモリ | 160,612 KB |
最終ジャッジ日時 | 2024-08-23 21:55:44 |
合計ジャッジ時間 | 8,110 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 295 ms
160,544 KB |
testcase_01 | AC | 298 ms
160,528 KB |
testcase_02 | AC | 321 ms
160,600 KB |
testcase_03 | AC | 325 ms
160,524 KB |
testcase_04 | WA | - |
testcase_05 | WA | - |
testcase_06 | WA | - |
testcase_07 | WA | - |
testcase_08 | WA | - |
testcase_09 | WA | - |
testcase_10 | WA | - |
testcase_11 | WA | - |
testcase_12 | WA | - |
testcase_13 | WA | - |
testcase_14 | WA | - |
testcase_15 | WA | - |
testcase_16 | WA | - |
testcase_17 | WA | - |
コンパイルメッセージ
main.cpp: In function 'int main()': main.cpp:39:17: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17' [-Wc++17-extensions] 39 | 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; T.reserve(20138910); 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); } } 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; }