結果

問題 No.688 E869120 and Constructing Array 2
ユーザー dazydazy
提出日時 2018-05-23 18:59:06
言語 C++11
(gcc 11.4.0)
結果
WA  
実行時間 -
コード長 1,703 bytes
コンパイル時間 1,305 ms
コンパイル使用メモリ 160,232 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-07-07 14:07:19
合計ジャッジ時間 2,161 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
5,248 KB
testcase_01 AC 2 ms
5,376 KB
testcase_02 AC 1 ms
5,376 KB
testcase_03 AC 2 ms
5,376 KB
testcase_04 AC 1 ms
5,376 KB
testcase_05 AC 2 ms
5,376 KB
testcase_06 AC 2 ms
5,376 KB
testcase_07 AC 2 ms
5,376 KB
testcase_08 AC 2 ms
5,376 KB
testcase_09 WA -
testcase_10 AC 2 ms
5,376 KB
testcase_11 AC 2 ms
5,376 KB
testcase_12 AC 2 ms
5,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;
    if(!K) printf("%d\n", K);
        else {
        for(a = 0; a < 31; a++) {
            for(b = 0; (a+b) < 31; b++) {
                ans = pow(2, b) * combination(a, 2);
                if(ans==K) break;
            }
            if(ans==K) 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("");
        }  
    }
}
0