C 方豆子
题意
按照题意模拟,详见链接
思路
看到的第一眼就想递归,之后发现稍微有点麻烦没那么直接
难度不高,模拟水题
代码
//>>>Qiansui
#include<map>
#include<set>
#include<list>
#include<stack>
#include<cmath>
#include<queue>
#include<deque>
#include<cstdio>
#include<string>
#include<vector>
#include<utility>
#include<iomanip>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<functional>
#define ll long long
#define ull unsigned long long
#define mem(x,y) memset(x,y,sizeof(x))
#define debug(x) cout << #x << " = " << x << endl
#define debug2(x,y) cout << #x << " = " << x << " " << #y << " = "<< y << endl
//#define int long long
inline ll read()
{
ll x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-48;ch=getchar();}
return x*f;
}
using namespace std;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<ull,ull> pull;
typedef pair<double,double> pdd;
/*
*/
const int maxm=3*(1<<10)+5,inf=0x3f3f3f3f,mod=998244353;
ll n;
string ss[2],ans[maxm];
void add(int x,int y){
ans[x]+=ss[y]+ss[y];
ans[x+1]+=ss[y]+ss[y];
ans[x+2]+=ss[y]+ss[y];
ans[x+3]+=ss[y]+ss[1-y];
ans[x+4]+=ss[y]+ss[1-y];
ans[x+5]+=ss[y]+ss[1-y];
return ;
}
void get(int x,int y,int i){
if(x==1){
add(i,y);
}else{
get(x-1,1-y,i);
get(x-1,1-y,i);
get(x-1,1-y,i+3*pow(2,x-1));
get(x-1,y,i+3*pow(2,x-1));
}
return ;
}
void solve(){
cin>>n;
ss[1]="***";
ss[0]="...";
get(n,1,1);
ll t=3*pow(2,n);
for(int i=1;i<=t;++i){
cout<<ans[i]<<'\n';
}
return ;
}
signed main(){
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int _=1;
// cin>>_;
while(_--){
solve();
}
return 0;
}
标签:typedef,ch,long,牛客,75,小白月赛,pair,include,define
From: https://www.cnblogs.com/Qiansui/p/17518023.html