結果
問題 | No.3082 Make Palindromic Multiple(Judge) |
ユーザー |
![]() |
提出日時 | 2025-03-28 23:13:56 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3,040 ms / 3,500 ms |
コード長 | 1,275 bytes |
コンパイル時間 | 3,795 ms |
コンパイル使用メモリ | 255,708 KB |
実行使用メモリ | 18,828 KB |
最終ジャッジ日時 | 2025-04-16 13:12:54 |
合計ジャッジ時間 | 20,949 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 73 |
ソースコード
#include <stdio.h>#include <bits/stdc++.h>#include <atcoder/all>using namespace atcoder;using mint = modint998244353;using namespace std;#define rep(i,n) for (int i = 0; i < (n); ++i)#define Inf32 1000000000#define Inf64 1000000000000000001LLlong long get(vector<string> s,vector<long long> t,long long mod){long long res = 0;long long B = mod/7;rep(i,s.size()){long long cur = 0;long long pows = 1;rep(j,s[i].size()){cur *= B;cur += s[i][j];cur %= mod;pows *= B;pows %= mod;}rep(j,60){if((t[i]>>j)&1){res *= pows;res += cur;res %= mod;}cur += cur * pows;pows *= pows;cur %= mod;pows %= mod;}}//cout<<res<<endl;return res;}bool isp(long long n){for(long long i=2;i*i<=n;i++){if(n%i==0)return false;}return true;}int main(){int K;cin>>K;vector<string> s(K);vector<long long> t(K);rep(i,K)cin>>s[i]>>t[i];int C = 0;for(long long i=975000000;i>=0;i--){if(!isp(i))continue;C++;long long r0 = get(s,t,i);reverse(s.begin(),s.end());reverse(t.begin(),t.end());rep(i,K)reverse(s[i].begin(),s[i].end());long long r1 = get(s,t,i);if(r0!=r1){cout<<"No"<<endl;return 0;}if(C==5)break;}cout<<"Yes"<<endl;return 0;}