結果
問題 | No.1729 ~サンプルはちゃんと見て!~ 16進数と8進数(1) |
ユーザー |
|
提出日時 | 2021-11-05 22:02:08 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 6,594 bytes |
コンパイル時間 | 2,684 ms |
コンパイル使用メモリ | 199,104 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-06 12:52:06 |
合計ジャッジ時間 | 3,487 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 24 |
ソースコード
#include<bits/stdc++.h>const int MAX = 510000;const int MOD = 1e9+7;long long fac[MAX], finv[MAX], inv[MAX];#define _GLIBCXX_DEBUG#define int long long#define PI 3.14159265359#define _Yes {cout<<"Yes"<<endl;}#define _No {cout<<"No"<<endl;}#define _YES {cout<<"YES"<<endl;}#define _NO {cout<<"NO"<<endl;}#define _ans {cout<<ans<<endl;}#define _count {cout<<count<<endl;}#define rep(i,n) for(int i=0;i<n;i++)#define rep1(i,n) for(int i=1;i<n+1;i++)#define ALL(obj) (obj).begin(), (obj).end()#define rALL(obj) (obj).rbegin(), (obj).rend()using namespace std;using ll = long long;using vc = vector<char>;using vd = vector<double>;using vi = vector<int>;using vll = vector<ll>;using vs = vector<string>;using vvc = vector<vc>;using vvd = vector<vd>;using vvi = vector<vi>;using vvll = vector<vll>;using vvs = vector<vs>;using pii = pair<int, int>;using psi = pair<string, int>;using pis = pair<int, string>;using pic = pair<int, char>;using pdd = pair<double, double>;using vpii = vector<pii>;using vpic = vector<pic>;using vpsi = vector<psi>;using vpis = vector<pis>;using vpdd = vector<pdd>;using tiii = tuple<int, int, int>;using tsii = tuple<string, int, int>;using tiis = tuple<int, int, string>;using vtiii = vector<tiii>;using mii = map<int, int>;int FACT(ll n){if(n==0){return 1;}else{ll base=1;for(ll i=1;i<=n;i++){base*=i;}return base;}}//n!int FACTmod(ll n, int mod){if(n==0){return 1;}else{ll base=1;for(ll i=1;i<=n;i++){base=base*i%mod;}return base;}}//n!%modvi DIVISOR(int n){vi v;for (int i=1;i*i<=n;i++){if(n%i==0) {v.push_back(i);if(i*i!=n)v.push_back(n/i);}}sort(ALL(v)); return v;} // 整数nの約数の昇順配列を出力bool is_prime(long long N) {if (N == 1) return false;for (long long i = 2; i * i <= N; ++i) {if (N % i == 0) return false;}return true;} //素数判定vi VEC_PRIME(int n) {// エラトステネスのふるいvi v;bitset<1000000> is_prime(0); // 十分大きなサイズを確保しますfor (int i = 2; i <= n; ++i) is_prime.set(i); // とりあえず全部ふるいに入れますfor (int i = 2; i <= n; ++i) {if (is_prime[i]) { // 素数 i を発見したらfor (int j = i * 2; j <= n; j += i) {is_prime.reset(j); // i の倍数をふるい落とす}}}// 結果出力for (int i = 2; i <= n; ++i) {if (is_prime[i]) v.push_back(i);}return v;}void NCRinit(){fac[0]=fac[1]=1;finv[0]=finv[1]=1;inv[1]=1;for(int i=2; i<MAX; i++){fac[i]=fac[i-1]*i%MOD;inv[i]=MOD-inv[MOD%i]*(MOD/i)%MOD;finv[i]=finv[i-1]*inv[i]%MOD;}}//二項係数前処理long long NCR(int n,int k){if(n<k)return 0;if(n<0 || k<0){return 0;}return fac[n]*(finv[k]*finv[n-k]%MOD)%MOD;}// 二項係数計算/modlong long POW(ll x, ll n) {ll ret = 1;while (n>0){if(n&1)ret*=x;x*=x;n>>=1;}return ret;}//x^nlong long POWmod(int x,int n, int mod) {long long ret=1;while(n>0) {if(n&1)ret=ret*x%mod;x=x*x%mod;n>>=1;}return ret;}//x^n%modll GCD(ll x, ll y) {while(y>0){ll r=x%y;x=y;y=r;}return x;}//gcdll LCM(ll x, ll y){return (x/GCD(x,y))*y;}//lcmint mNCR(int n,int r){if(n<r){return 0;}else if(r==0){return 1;}else{int x=1,ans=1;for(int i=n;i>n-r;i--){ans=ans*i/x;x++;}return ans;}}//n.r小さいときのnCrvector<pair<long long, long long> > prime_factorize(long long N) {vector<pair<long long, long long> > res;for (long long a = 2; a * a <= N; ++a) {if (N % a != 0) continue;long long ex = 0;while (N % a == 0) {++ex;N /= a;}res.push_back({a, ex});}if (N != 1) res.push_back({N, 1});return res;} //素因数分解int MINVEC(vi v){int min=2147483647;int ans=0;int n=v.size();rep(i,n){if(v[i]<=min){min=v[i];ans=i;}}return ans;} //viの最小項の番号を返す;//最大番号優先int MAXVEC(vi v){int max=-2147483648;int ans=0;int n=v.size();rep(i,n){if(v[i]>=max){max=v[i];ans=i;}}return ans;} //viの最大項の番号を返す;//最大番号優先// aよりもbが大きいならばaをbで更新する// (更新されたならばtrueを返す)template <typename T>bool chmax(T &a, const T& b) {if (a < b) {a = b; // aをbで更新return true;}return false;}// aよりもbが小さいならばaをbで更新する// (更新されたならばtrueを返す)template <typename T>bool chmin(T &a, const T& b) {if (a > b) {a = b; // aをbで更新return true;}return false;}int MASSVEC(vi v, int x, int y){int ans=0;for(int i=x;i<=y;i++){ans+=v[i];}return ans;} //ベクトルのx番目からy番目までの総和vector<pair<int, int>> SECONDSORT(vector<pair<int,int>> v){int n=v.size();rep(i,n){swap(v[i].first,v[i].second);}sort(ALL(v));rep(i,n){swap(v[i].first,v[i].second);}return v;} //vpiiをsecond優先で昇順ソートvector<pair<int, int>> SECONDrSORT(vector<pair<int,int>> v){int n=v.size();rep(i,n){swap(v[i].first,v[i].second);}sort(rALL(v));rep(i,n){swap(v[i].first,v[i].second);}return v;} //vpiiをsecond優先で降順ソート//ABCDEFGHIJKLMNOPQRSTUVWXYZ//abcdefghijklmnopqrstuvwxyzsigned main(void){string s;cin>>s;string t="";int n=s.size();for(int i=0;i<n;i++){if(s[i]=='A')t+="1010";if(s[i]=='B')t+="1011";if(s[i]=='C')t+="1100";if(s[i]=='D')t+="1101";if(s[i]=='E')t+="1110";if(s[i]=='F')t+="1111";}int k=3-t.size()%3;if(k!=3){rep(i,k){t="0"+t;}}k=t.size();vvi v={{0,0},{0,1},{0,2},{0,3},{0,4},{0,5},{0,6},{0,7}};for(int i=0;i<t.size()-2;i+=3){if(t[i]=='0' && t[i+1]=='0' && t[i+2]=='0'){v[0][0]++;}else if(t[i]=='0' && t[i+1]=='0' && t[i+2]=='1'){v[1][0]++;}else if(t[i]=='0' && t[i+1]=='1' && t[i+2]=='0'){v[2][0]++;}else if(t[i]=='0' && t[i+1]=='1' && t[i+2]=='1'){v[3][0]++;}else if(t[i]=='1' && t[i+1]=='0' && t[i+2]=='0'){v[4][0]++;}else if(t[i]=='1' && t[i+1]=='0' && t[i+2]=='1'){v[5][0]++;}else if(t[i]=='1' && t[i+1]=='1' && t[i+2]=='0'){v[6][0]++;}else if(t[i]=='1' && t[i+1]=='1' && t[i+2]=='1'){v[7][0]++;}}sort(rALL(v));vi x;rep(i,8){if(i==0){x.push_back(v[i][1]);continue;}if(v[i][0]==v[i-1][0]){x.push_back(v[i][1]);}else{break;}}sort(ALL(x));rep(i,x.size()){cout<<x[i]<<" ";}}