結果
| 問題 |
No.294 SuperFizzBuzz
|
| コンテスト | |
| ユーザー |
srjywrdnprkt
|
| 提出日時 | 2023-01-16 06:16:49 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 89 ms / 5,000 ms |
| コード長 | 1,320 bytes |
| コンパイル時間 | 807 ms |
| コンパイル使用メモリ | 109,708 KB |
| 最終ジャッジ日時 | 2025-02-10 03:40:41 |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 12 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:49:19: warning: ‘K’ may be used uninitialized [-Wmaybe-uninitialized]
49 | int mx = 1<<(K-1);
| ~~^~~
main.cpp:34:18: note: ‘K’ was declared here
34 | long long N, K, S, use;
| ^
ソースコード
#include <iostream>
#include <vector>
#include <cmath>
#include <map>
#include <set>
#include <iomanip>
#include <queue>
#include <algorithm>
#include <numeric>
#include <deque>
#include <complex>
#include <cassert>
using namespace std;
vector<vector<long long>> comb;
void combinations(long long n, long long modc=1e18){
comb.resize(n+1);
for (long long i=0; i<=n; i++){
comb[i].resize(n+1);
comb[i][0] = 1;
}
for (long long i=1; i <= n; i++){
for (long long j=1; j <= i; j++){
comb[i][j] = (comb[i-1][j-1] + comb[i-1][j]) % modc;
}
}
}
int main(){
long long N, K, S, use;
cin >> N;
combinations(30);
for (int i=3; i<100; i++){
S = 0;
for (int j=1; j<=i/3; j++) S += comb[i-1][3*j-1];
use = min(N, S);
N -= use;
if (N == 0){
K = i;
break;
}
}
int mx = 1<<(K-1);
for (int i=0; i<mx; i++){
if ((__builtin_popcount(i)+1)%3 == 0){
if (use>1){
use--;
continue;
}
for (int j=K-2; j>=0; j--){
if (i & 1<<j) cout << "5";
else cout << "3";
}
cout << "5" << endl;
return 0;
}
}
return 0;
}
srjywrdnprkt