結果
| 問題 |
No.1729 ~サンプルはちゃんと見て!~ 16進数と8進数(1)
|
| コンテスト | |
| ユーザー |
ぷら
|
| 提出日時 | 2021-11-25 01:49:46 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 960 bytes |
| コンパイル時間 | 1,803 ms |
| コンパイル使用メモリ | 203,456 KB |
| 最終ジャッジ日時 | 2025-01-26 01:07:10 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 24 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
string Calc(char c) {
int n = 10+(c-'A');
string ans = "";
for(int i = 0; i < 4; i++) {
ans += (char)('0'+n%2);
n >>= 1;
}
reverse(ans.begin(),ans.end());
return ans;
}
int calc(string s) {
int res = 0;
res += (s[0]-'0')*4;
res += (s[1]-'0')*2;
res += (s[2]-'0')*1;
return res;
}
int main() {
string N;
cin >> N;
string S = "";
for(int i = 0; i < N.size(); i++) {
S += Calc(N[i]);
}
S = string((3-S.size()%3)%3,'0')+S;
map<int,int>tmp;
int mx = 0;
for(int i = 0; i < S.size(); i += 3) {
tmp[calc(S.substr(i,3))]++;
mx = max(mx,tmp[calc(S.substr(i,3))]);
}
vector<int>ans;
for(auto i:tmp) {
if(i.second == mx) {
ans.push_back(i.first);
}
}
for(int i = 0; i < ans.size(); i++) {
cout << ans[i] << ((i+1 == ans.size())?"\n":" ");
}
}
ぷら