%%%Manchery
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
typedef long long ll;
ll c[710],f[710];
inline ll C(int x,int y){
long double ret=1;
for(int i=1;i<=x-y;i++) ret=ret*(i+y)/i;
return (ll)(ret+0.1);
}
int main(){
ll k;
cin>>k;
for(int i=1;i<=700;i++) f[i]=C(i+6,7);
for(int i=700;i;i--)
c[i]=k/f[i],k%=f[i];
int t=700;
while(!c[t]) t--;
for(int i=t;i;i--)
cout<<string(c[i],'F')<<"ESTIVAL";
//cout<<endl<<"FESTIVAL"<<endl;
return 0;
}

本文介绍了一个使用C++实现的算法,该算法通过组合数学中的计数原理来计算特定数值,并据此输出一系列带有FESTIVAL字符串的组合。此算法涉及到了动态规划的思想以及递归计算的方法。
777

被折叠的 条评论
为什么被折叠?



