結果
| 問題 |
No.294 SuperFizzBuzz
|
| コンテスト | |
| ユーザー |
chakku
|
| 提出日時 | 2016-03-30 02:41:42 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
CE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 1,593 bytes |
| コンパイル時間 | 451 ms |
| コンパイル使用メモリ | 61,736 KB |
| 最終ジャッジ日時 | 2024-11-14 19:36:05 |
| 合計ジャッジ時間 | 860 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:68:19: error: ‘pow’ was not declared in this scope
68 | for(int i=1;i<pow(2,digit);i+=2){
| ^~~
ソースコード
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <climits>
#include <cassert>
using namespace std;
#define REP(i,n) for(int i=0;i<n;i++)
#define INF INT_MAX/3
#define MP make_pair
#define PB push_back
#define ALL(v) (v).begin(),(v).end()
typedef long long ll;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;
ll C[30][30];
ll dig[30];
void comb(){
REP(i,30) C[i][i] = 1;
REP(i,30) C[i][0] = 1;
for(int i=1;i<30;i++){
for(int j=1;j<i;j++){
C[i][j] = C[i-1][j-1] + C[i-1][j];
}
}
}
int one(int n){
int cnt=0;
while(n>0){
if(n%2) cnt++;
n >>= 1;
}
return cnt;
}
int main(){
ll N;
cin >> N;
comb();
for(int i=3;i<30;i++){
for(int j=2;j<i;j+=3){
dig[i] += C[i-1][j];
}
}
int digit = 0;
ll sum = 0;
for(int i=3;i<30;i++){
sum += dig[i];
digit = i;
if(sum>=N) break;
}
N = N - (sum - dig[digit]);
int cnt = 0;
for(int i=1;i<pow(2,digit);i+=2){
assert(i%2==1);
int o = one(i);
if(o%3!=0) continue;
cnt++;
if(cnt==N){
int n = i;
string ans = "";
while(n>0){
if(n%2==0) ans+="3";
else ans += "5";
n>>=1;
}
string l = string(digit-ans.length(),'3');
reverse(ALL(ans));
cout << l << ans << endl;
return 0;
}
}
}
chakku