結果

問題 No.688 E869120 and Constructing Array 2
ユーザー dazydazy
提出日時 2018-05-23 19:10:07
言語 C++11
(gcc 11.4.0)
結果
AC  
実行時間 2 ms / 1,000 ms
コード長 1,632 bytes
コンパイル時間 1,270 ms
コンパイル使用メモリ 146,908 KB
実行使用メモリ 4,500 KB
最終ジャッジ日時 2023-09-21 20:42:49
合計ジャッジ時間 2,207 ms
ジャッジサーバーID
(参考情報)
judge11 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

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

ソースコード

diff #

#include "bits/stdc++.h"
using namespace std;
#define fastcin {\
    cin.tie(0);\
    ios::sync_with_stdio(false);\
}
#define rep(i, a, b) for(int i = a; i < b; i++)
#define rrep(i, a, b) for(int i = a; i >= b; i--)
#define fore(i, a) for(auto &i:a)
#define print(x) cout << x << "\n"
#define SORT(a, n) sort(a, a+n);
#define REVERSE(a,n) reverse(a,a+n);
#define VSORT(v) sort(v.begin(), v.end());
#define VREVERSE(v) reverse(v.begin(), v.end());
#define MOD 1000000007
#define yes "YES"
#define no "NO"
using ll = long long;
using vi = vector<int>;
using vvi = vector<vi>;
using vll = vector<ll>;

ll combination(int n,int r) { 
    ll i = 1; 
    int k = r > n - r ? n - r : r, count; 
    if(k < 0) return 0; 
    std::list<int> list; 
    std::list<int>::iterator it; 
    for(count = 2; count <= k; ++count) list.push_back(count); 
    for(count = n; count > n - k; --count) 
    { 
        i *= count; 
        for(it = list.begin(); it != list.end(); ) 
        { 
            if(!(i % *it)) 
            { 
                i /= *it; 
                it = list.erase(it); 
            } 
            else ++it; 
        } 
    } 
    return i; 
} 

int main() {
    fastcin;
    int K, ans = 0;
    int a, b;
    cin >> K;
    for(a = 0; a < 31; a++) {
        for(b = 0; (a+b) < 31; b++) {
            ans = pow(2, b) * combination(a, 2);
            if(ans==K && (a+b)>1) break;
        }
        if(ans==K && (a+b)>1) break;
    }
    if(K != ans) print("no found");
    else {
        print(a+b);
        rep(i, 0, a) cout << "1 ";
        rep(i, 0, b) cout << "0 ";
        if(ans > 0) print("");
    }  
    return 0;
}
0