結果

問題 No.688 E869120 and Constructing Array 2
ユーザー mocobtmocobt
提出日時 2018-05-31 23:05:47
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
WA  
実行時間 -
コード長 745 bytes
コンパイル時間 297 ms
コンパイル使用メモリ 39,168 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-07-07 14:10:06
合計ジャッジ時間 2,312 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 WA -
testcase_01 WA -
testcase_02 WA -
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <cstdio>
#include <cmath>
#define MAX_K 1000000000
#define MAX_N 30

using namespace std;

auto K=0,N=0;

void input(){
    scanf("%d", &K);
}

void solve(){
    auto c0=0, c1=0;    // それぞれbに含まれる0と1の個数
    auto flag = false;

    // C(c1,2)*2^c0=Kを満たす(c0,c1)を求めればOK
    for(c0=0;c0<=MAX_N;c0++){
        for(c1=1;c1<MAX_N-c0;c1++){
            printf("%d %d\n",c0, c1);
            int c = c1*(c1-1)/2 * pow(2,c0);
            if(c==K){
                flag=true;
                break;
            }
        }
        if(flag) break;
    }

    printf("%d\n",c0+c1);
    for(int i=0;i<c0+c1;i++){
        printf("%d ",i<c1);
    }
    printf("\n");
}

int main(){
    input();
    solve();
}
0