結果
問題 | No.294 SuperFizzBuzz |
ユーザー |
![]() |
提出日時 | 2020-04-19 14:51:56 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 4,487 bytes |
コンパイル時間 | 1,701 ms |
コンパイル使用メモリ | 181,012 KB |
実行使用メモリ | 41,256 KB |
最終ジャッジ日時 | 2024-10-05 09:56:35 |
合計ジャッジ時間 | 13,960 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | TLE * 1 -- * 2 |
other | -- * 12 |
ソースコード
#include "bits/stdc++.h"#include <unordered_set>#define rep(i,n) for(int i = 0; i < n; i++)typedef long long ll;typedef unsigned long long ull;using namespace std;#define vll vector<vector<long long>>#define vl vector<long long>#define vi vector<int>#define vii vector<vector<int>>#define pb push_back#define pf push_front#define ld long double#define Sort(a) sort(a.begin(),a.end())#define cSort(a,cmp) sort(a.begin(),a.end(),cmp)#define reSort(a) sort(a.rbegin(), a.rend())static const ll llMAX = numeric_limits<long long>::max();static const int intMAX = numeric_limits<int>::max();static const ll llMIN = numeric_limits<long long>::min();static const int intMIN = numeric_limits<int>::min();static const ll d_5 = 100000;static const ll d9_7 = 1000000007;static const ll d_9 = 1000000000;static const double PI=3.14159265358979323846;template<class T>T gcd(T a,T b){if(a==0){return b;}else if(b==0){return a;}while(1) {if(a < b) swap(a, b);if(!b) break;a %= b;}return a;}ll digitpower(ll a,ll b){//aのb乗を計算if(b==1){return a;}else if(b==0){return 1;}int mode=0;if(mode==0){if(b%2==1){ll tmp = digitpower(a,(b-1)/2);tmp%=d9_7;tmp*=tmp;tmp%=d9_7;tmp*=a;return (tmp)%d9_7;}else{ll tmp = digitpower(a,(b)/2);tmp%=d9_7;tmp*=tmp;tmp%=d9_7;return (tmp)%d9_7;}}else{if(b%2==1){ll tmp = digitpower(a,(b-1)/2);tmp*=tmp;tmp*=a;return (tmp);}else{ll tmp = digitpower(a,(b)/2);tmp*=tmp;return (tmp);}}return 0;}template<class T>void Printvector(std::vector<T> &a){int size = a.size();rep(i,size){cout<<a[i]<<" ";}cout<<endl;}template<class T>void Printvector(std::vector<std::vector<T>> &a){int size = a.size();rep(i,size){int size2=a[i].size();rep(j,size2){cout<<a[i][j]<<" ";}cout<<endl;}cout<<endl;}unordered_set<ll> primes(ll n){unordered_set<ll> ret;for(ll i=2;i*i<=n;i++){if(n%i==0){ret.insert(i);ret.insert(n/i);}}return ret;}long long modinv(long long a, long long m) {//modの逆元long long b = m, u = 1, v = 0;while (b) {long long t = a / b;a -= t * b; swap(a, b);u -= t * v; swap(u, v);}u %= m;if (u < 0) u += m;return u;}vl facs(1000008,-1);ll Factrial(ll num){if(facs[num]!=-1){return facs[num];}if(num==1||num<=0){return 1;}else if(num<0){printf("ERROR_minus\n");return 0;}else{facs[num]=(num*Factrial(num-1))%d9_7;return facs[num];}}vl invs(2000010,-1);ll linercomb(ll n,ll k, ll mod){//n,kの線形時間で求めるif(n<k)return 0;if(n<0)return 0;if(k==0 || k==n)return 1;ll ans=Factrial(n);if(invs[k]==-1){invs[k]=modinv(Factrial(k),mod);}ans*=invs[k];ans%=d9_7;ll k1=Factrial(n-k);k1%=mod;ans*=modinv(k1,mod);ans%=mod;return ans;}//再帰型combinationvll RecurC(1001,vl(1001,-1));ll RecurComb(ll n, ll k){if(k==n || k == 0){RecurC[n][k]=1;return 1;}if(RecurC[n][k]!=-1){;}else{RecurC[n][k] = RecurComb(n-1,k-1)+RecurComb(n-1,k);}return RecurC[n][k];}int main(void){ll n;cin>>n;ll now=0;ll nowd = 3;while(1){ll diffpattern = nowd/3;ll tmpsum=0;if(nowd>3){for(ll num5=1;/*5*3がいくつあるかの値*/ num5<=diffpattern;num5++){tmpsum+=RecurComb(nowd-1,num5*3-1);}}else{tmpsum=1;}if(tmpsum>n ){break;}else{n-=tmpsum;nowd++;}}bitset<24> bits;int flag=0;for(ull i=0;flag==0;i++){bits=i;if(bits.count() % 3==0 && i%2==1){n--;if(n==0){flag=1;break;}}else{;}}string ans="";for(int i=0;i<nowd;i++){if(bits[i]==0){ans="3"+ans;}else{ans="5"+ans;}}cout<<ans<<endl;return 0;}//clang++ -g -fsanitize=address -fno-omit-frame-pointer 1.cpp -o test.exe//<<std::setprecision(30)//重複削除/* std::sort(vec.begin(), vec.end());vec.erase(std::unique(vec.begin(), vec.end()), vec.end());*///ペアの全探索/*do{int s=0;for(int i=0;i<n/2;i++)s+=v[i]^v[i+n/2];r=max(s,r);reverse(v.begin()+n/2,v.end());}while(next_permutation(v.begin(),v.end()));*/