結果
問題 | No.6 使いものにならないハッシュ |
ユーザー |
|
提出日時 | 2024-02-14 17:02:56 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 23 ms / 5,000 ms |
コード長 | 2,016 bytes |
コンパイル時間 | 716 ms |
コンパイル使用メモリ | 93,872 KB |
最終ジャッジ日時 | 2025-02-19 13:06:01 |
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 32 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:88:13: warning: ‘maxfirst’ may be used uninitialized [-Wmaybe-uninitialized] 88 | cout << maxfirst << endl; | ^~~~~~~~ main.cpp:54:9: note: ‘maxfirst’ was declared here 54 | int maxfirst; | ^~~~~~~~
ソースコード
#include <iostream>#include <algorithm>#include <vector>#include <math.h>using namespace std;bool is_prime(int a) {if (a < 4) {if (a == 1) {return false;}else {return true;}} else if (a % 2 == 0) {return false;}for (int i = 3; i < sqrt(a) + 2; i+=2) {if (a % i == 0) {return false;}}return true;}int sum_digit(int a) {int x = a;int sum = 0;for (int i = 0; i < 6; i++) {sum += x % 10;x /= 10;}return sum;}int frank_hash(int a) {int sum = a;for (;sum > 9;) {sum = sum_digit(sum);}return sum;}void output(vector<int> a) {int l = a.size();cout << "[";for (int i = 0; i < l; i++) {cout << a[i] << ", ";}cout << "]" << endl;}int main(void) {int K, N;cin >> K >> N;//cout << sum_digit(K) << endl;//cout << frank_hash(K) << endl;int maxfirst;int maxlen = 0;int curlen = 0;vector<int> ps, hs;for (int i = K; i < N + 1; i++) {if (!is_prime(i)) {continue;}int h = frank_hash(i);bool is_exest = false;for (int j = 0; j < hs.size(); j++) {if (hs[j] == h) {if (curlen >= maxlen) {maxlen = curlen;maxfirst = ps[0];}curlen -= j + 1;ps.erase(ps.begin(), ps.begin() + j + 1);hs.erase(hs.begin(), hs.begin() + j + 1);is_exest = true;break;}}ps.push_back(i);hs.push_back(h);curlen++;//cout << i << ", " << h << ", " << curlen << ", " << maxlen << ", " << maxfirst << endl;//output(ps);//output(hs);}if (curlen >= maxlen) {maxlen = curlen;maxfirst = ps[0];}//cout << "max first: " << maxfirst << ", max len: " << maxlen << endl;cout << maxfirst << endl;return 0;}