結果
| 問題 |
No.8015 アンチローリングハッシュ
|
| ユーザー |
i_am_nicolen_22
|
| 提出日時 | 2019-08-16 01:17:20 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,269 bytes |
| コンパイル時間 | 1,318 ms |
| コンパイル使用メモリ | 163,032 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-09-19 15:52:52 |
| 合計ジャッジ時間 | 14,361 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 2 WA * 19 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
using ull = unsigned long long;
vector<ll>rolling_hash_search(string s,string t){
vector<long long >index_list;
ll SL=s.size();
ll TL=t.size();
ull b=1e8+7;
ull a=1;
for (int i = 0; i < TL; i++)
{
a*=b;
}
ull s_hash = 0;
for (int i = 0; i < TL; i++)
{
s_hash=s_hash*b+s[i];
}
ull t_hash=0;
for (int i = 0; i < TL; i++)
{
t_hash=t_hash*b+t[i];
}
for (int i = 0; i < SL-TL+1; i++)
{
if(s_hash==t_hash) index_list.push_back(i);
if(i+TL<SL) s_hash=s_hash*b-s[i]*a+s[i+TL];
}
return index_list;
}
int main(){
int a,b;
cin>>a>>b;
string s,t;
ll cnt=0;
int d=0;
for (int i = 1; i <=25; i++)
{
cnt=0;
ll copy=a;
bool flag=false;
while(1){
if(cnt>1e6) break;
copy*=copy;
copy%=b;
if((copy*i)%b==0) {
flag=true;
d=i;
break;
}
cnt++;
}
if(flag) break;
}
s.push_back('a');
t.push_back('a'+d);
for (int i = 0; i < cnt; i++)
{
s.push_back('a');
t.push_back('a');
}
cout<<s<<endl;
cout<<t<<endl;
return 0;
}
i_am_nicolen_22