我发了J了啊
F
#include<bits/stdc++.h>
using namespace std;
long long int jiecheng(int n)
{
long long int temp=1;
for (int i=1;i<=n;i++)
{
temp*=i;
}
return temp;
}
long long int combination(int n,int m)
{
return (jiecheng(n)/(jiecheng(m)*jiecheng(n-m)));
}
int main()
{
int n,m;
cin>>n>>m;
cout<<combination(n+m-2,m-1);
return 0;
}
K
#include<iostream>
using namespace std;
const int N=1e3;
int B[N][N];
void dfs(int n){
if(n==1) {//第n级盒子只有一个'X';
B[0][0]=1;
return;
}
dfs(n-1);
int len_n_1=1;//表示n-1级盒子边长;
for(int i=1;i<=n-2;++i)
len_n_1*=3;
int dx[4]={0,1,2,2,},dy[5]={2,1,0,2};//表示行和列的变化,单位为len_n_1;
for(int i=0;i<4;++i)
for(int j=0;j<len_n_1;++j)
for(int k=0;k<len_n_1;++k)
B[dx[i]*len_n_1+j][dy[i]*len_n_1+k]=B[j][k];//将变化前的值复制给变化后的值;
return;
}
int main()
{
dfs(7);
int n;
while(cin>>n&&n!=-1){
int len_n=1;//len_n表示n级盒子边长;
for(int i=1;i<=n-1;++i)
len_n*=3;//边长=3^(n-1);
for(int i=0;i<len_n;++i){//根据输入的数值大小,输出对应边长大小的数组;
for(int j=0;j<len_n;++j)
if(B[i][j]==1) cout<<'X';//某一位值为1表示该输出'X',否则输出空格;
else cout<<' ';
cout<<endl;
}
cout<<'-'<<endl;
}
}
比赛已结束。