結果

問題 No.1729 ~サンプルはちゃんと見て!~ 16進数と8進数(1)
ユーザー Mat_hMat_h
提出日時 2021-11-05 22:02:08
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 6,594 bytes
コンパイル時間 2,520 ms
コンパイル使用メモリ 195,328 KB
実行使用メモリ 4,380 KB
最終ジャッジ日時 2023-08-06 09:53:08
合計ジャッジ時間 3,754 ms
ジャッジサーバーID
(参考情報)
judge11 / judge14
このコードへのチャレンジ(β)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
4,380 KB
testcase_01 AC 2 ms
4,376 KB
testcase_02 AC 1 ms
4,376 KB
testcase_03 AC 2 ms
4,376 KB
testcase_04 AC 1 ms
4,380 KB
testcase_05 AC 2 ms
4,376 KB
testcase_06 AC 1 ms
4,380 KB
testcase_07 AC 2 ms
4,380 KB
testcase_08 AC 2 ms
4,376 KB
testcase_09 AC 1 ms
4,380 KB
testcase_10 AC 2 ms
4,376 KB
testcase_11 AC 1 ms
4,376 KB
testcase_12 AC 1 ms
4,380 KB
testcase_13 AC 2 ms
4,380 KB
testcase_14 AC 1 ms
4,376 KB
testcase_15 AC 2 ms
4,376 KB
testcase_16 AC 1 ms
4,376 KB
testcase_17 AC 2 ms
4,380 KB
testcase_18 AC 1 ms
4,376 KB
testcase_19 AC 1 ms
4,376 KB
testcase_20 AC 1 ms
4,380 KB
testcase_21 AC 1 ms
4,380 KB
testcase_22 AC 1 ms
4,376 KB
testcase_23 AC 1 ms
4,376 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#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!%mod

vi 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;}// 二項係数計算/mod

long long POW(ll x, ll n) {ll ret = 1;while (n>0){if(n&1)ret*=x;x*=x;n>>=1;}return ret;}//x^n
long 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%mod

ll GCD(ll x, ll y) {while(y>0){ll r=x%y;x=y;y=r;}return x;}//gcd
ll LCM(ll x, ll y){return (x/GCD(x,y))*y;}//lcm

int 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小さいときのnCr

vector<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
//abcdefghijklmnopqrstuvwxyz

signed 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]<<" ";
}
}
0