Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define gc c=getchar()
- #define r(x) read(x)
- #define ll long long
- template<typename T>
- inline void read(T&x){
- x=0;T k=1;char gc;
- while(!isdigit(c)){if(c=='-')k=-1;gc;}
- while(isdigit(c)){x=x*10+c-'0';gc;}x*=k;
- }
- const int N=61;
- ll F[N][N][N*N];
- bool vis[N][N][N*N];
- ll f(int n,int c,int k){
- if(!n && !k)return 1;
- if(!n || k<0)return 0;
- if(vis[n][c][k])return F[n][c][k];
- vis[n][c][k]=1;
- return F[n][c][k]=f(n-1,c,k-c)+f(n-1,c+1,k);
- }
- void print(int n,int c,int k,ll x){
- if(!n)return ;
- if(x<f(n-1,c,k-c)){
- putchar('A');
- print(n-1,c,k-c,x);
- }
- else {
- putchar('B');
- print(n-1,c+1,k,x-f(n-1,c,k-c));
- }
- }
- int main(){
- // freopen(".in","r",stdin);
- // freopen(".out","w",stdout);
- int n,k;r(n),r(k);
- ll ans=f(n,0,k);
- if(ans&1)print(n,0,k,ans>>1);
- else {
- print(n,0,k,(ans>>1)-1);
- puts("");
- print(n,0,k,ans>>1);
- }
- puts("");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement