結果
問題 | No.294 SuperFizzBuzz |
ユーザー |
![]() |
提出日時 | 2015-10-23 23:39:49 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,486 bytes |
コンパイル時間 | 744 ms |
コンパイル使用メモリ | 95,720 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-23 18:14:15 |
合計ジャッジ時間 | 1,338 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 12 |
ソースコード
#define _CRT_SECURE_NO_WARNINGS#include<sstream>#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<climits>#include<cmath>#include<string>#include<vector>#include<set>#include<map>#include<queue>#include<numeric>#include<functional>#include<algorithm>#include<bitset>#include<tuple>#include<unordered_set>#include<random>using namespace std;#define INF (1<<29)#define rep(i,n) for(int i=0;i<(int)(n);i++)#define all(v) v.begin(),v.end()#define uniq(v) v.erase(unique(all(v)),v.end())#define indexOf(v,x) (find(all(v),x)-v.begin())#define MAXN 30long long c[MAXN + 1][MAXN + 1];void init() {c[0][0] = 1;for (int i = 1; i <= MAXN; i++) {c[i][0] = 1;for (int j = 1; j <= i; j++)c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]);}}int main() {ios::sync_with_stdio(0);cin.tie(0);init();int n;cin >> n;int dp[3] = {};dp[0] = 1;int d = 1;rep(j,INF){int nxt[3] = {};rep(i, 3) {if(j)nxt[i] += dp[i];nxt[(i + 1) % 3] += dp[i];}if (1<j&&n <= nxt[0]) {break;}if(j)n -= nxt[0];rep(i, 3)dp[i] = nxt[i];d++;}//cout<<d<<endl;string ans;int a = 0;rep(i, d-2) {if (n == 1)break;long long s = 0;for (int j = 3-a%3; j<=d - i-1+a; j += 3) {s += c[d - i - 2][j-1];}if (n<=s) {ans += '3';}else {n -= s;ans += '5';a++;}}while (d - ans.size() > 3 - a % 3)ans += '3';rep(i, 3 - a % 3)ans += '5';cout << ans << endl;return 0;}