結果
問題 |
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":" "); } }