結果
| 問題 |
No.430 文字列検索
|
| コンテスト | |
| ユーザー |
mban
|
| 提出日時 | 2017-02-09 13:32:16 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 881 bytes |
| コンパイル時間 | 690 ms |
| コンパイル使用メモリ | 77,056 KB |
| 実行使用メモリ | 10,496 KB |
| 最終ジャッジ日時 | 2024-11-10 00:14:08 |
| 合計ジャッジ時間 | 4,025 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 4 |
| other | AC * 1 TLE * 1 -- * 12 |
ソースコード
#include<iostream>
#include<string>
#include<map>
#define ABC "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
using namespace std;
string s;
int n;
string *c;
map<char, int>d;
unsigned int i, j, k, anser = 0;
void scan() {
cin >> s;
cin >> n;
c = new string[n];
for (i = 0; i < n; i++)
{
cin >> c[i];
}
}
long long tolong(string ss) {
long long result = 0;
long long p = 1;
for (j = 0; j < ss.size(); j++)
{
result += d[ss[j]] * p;
p *= 26;
}
return result;
}
int main(void) {
scan();
for (i = 0; i < 26; i++)
{
d[ABC[i]] = i;
}
for (i = 0; i < n; i++)
{
long long search = tolong(c[i]);
long long p = 1, l = 0;
for (j = 0; j < c[i].size() - 1; j++)
{
l += d[s[j]] * p;
p *= 26;
}
for (j = c[i].size() - 1; j < s.size(); j++)
{
l += d[s[j]] * p;
if (l == search) {
anser++;
}
l /= 26;
}
}
cout << anser << endl;
return 0;
}
mban