結果
問題 | No.3082 Make Palindromic Multiple(Judge) |
ユーザー |
|
提出日時 | 2025-03-28 23:19:35 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,715 bytes |
コンパイル時間 | 7,485 ms |
コンパイル使用メモリ | 367,760 KB |
実行使用メモリ | 18,916 KB |
最終ジャッジ日時 | 2025-03-28 23:19:52 |
合計ジャッジ時間 | 17,153 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 64 WA * 2 |
ソースコード
#include<bits/stdc++.h>using namespace std;#include<atcoder/all>using namespace atcoder;using mint=atcoder::modint998244353;#pragma GCC optimize("O3")#pragma GCC optimize("unroll-loops")using lint=__int128_t;#define rep(i,n) for(int i=0;i<(n);i++)#define rng(i,l,r) for(int i=(l);i<(r);i++)#define rrep(i,n) for(int i=(n)-1;i>=0;i--)#define rrng(i,l,r) for(int i=(r)-1;i>=(l);i--)#define ALL(x) (x).begin(),(x).end()#define int long long#define fi first#define se secondstruct fast_io{fast_io(){cin.tie(nullptr)->sync_with_stdio(false);}}_;const lint P=2147483647;const lint R=100;inline lint modpow(lint a,lint b,lint m){lint x=1;while(b){if(b&1)x=(x*a)%m;a=(a*a)%m;b>>=1;}return x;}inline lint geometric_progression(lint a,lint n,lint m){if(n==0)return 0;if(n%2==1){return (geometric_progression(a,n-1,m)*a+1)%m;}else{return (geometric_progression(a*a%m,n/2,m)*(1+a))%m;}};signed main(){int K;cin>>K;vector<string> S(K);vector<int> T(K);rep(i,K)cin>>S[i]>>T[i];auto get_hash=[&](vector<string> s,vector<int> t){lint ret=0;rep(i,K){// cout<<i<<" : "<<s[i]<<" "<<t[i]<<endl;lint q=0;for(auto&&e:s[i])q=(q*R+(e-'0'))%P;lint sz=s[i].size();lint tmp=modpow(R,sz,P);lint tmp2=geometric_progression(tmp,t[i],P);ret=(ret*modpow(R,sz*t[i],P))%P;// cout<<"q : "<<q<<endl;// cout<<"tmp : "<<tmp<<endl;// cout<<"tmp2 : "<<tmp2<<endl;ret=(ret+q*tmp2)%P;}// cout<<"ret : "<<ret<<endl;return ret;};set<lint> st;rep(i,2){st.insert(get_hash(S,T));reverse(ALL(S));reverse(ALL(T));for(auto&&e:S)reverse(ALL(e));}if(st.size()==1)cout<<"Yes"<<endl;else cout<<"No"<<endl;}