結果
問題 | No.294 SuperFizzBuzz |
ユーザー | chakku |
提出日時 | 2016-03-30 02:41:42 |
言語 | C++11 (gcc 11.4.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; } } }