1242:网线主管
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 22016 通过数: 5145【题目描述】
仙境的居民们决定举办一场程序设计区域赛。裁判委员会完全由自愿组成,他们承诺要组织一次史上最公正的比赛。他们决定将选手的电脑用星形拓扑结构连接在一起,即将它们全部连到一个单一的中心服务器。为了组织这个完全公正的比赛,裁判委员会主席提出要将所有选手的电脑等距离地围绕在服务器周围放置。
为购买网线,裁判委员会联系了当地的一个网络解决方案提供商,要求能够提供一定数量的等长网线。裁判委员会希望网线越长越好,这样选手们之间的距离可以尽可能远一些。
该公司的网线主管承接了这个任务。他知道库存中每条网线的长度(精确到厘米),并且只要告诉他所需的网线长度(精确到厘米),他都能够完成对网线的切割工作。但是,这次,所需的网线长度并不知道,这让网线主管不知所措。
你需要编写一个程序,帮助网线主管确定一个最长的网线长度,并且按此长度对库存中的网线进行切割,能够得到指定数量的网线。
【输入】
第一行包含两个整数N和K,以单个空格隔开。N(1 ≤ N ≤ 10000)是库存中的网线数,K(1 ≤ K ≤ 10000)是需要的网线数量。
接下来N行,每行一个数,为库存中每条网线的长度(单位:米)。所有网线的长度至少1m,至多100km。输入中的所有长度都精确到厘米,即保留到小数点后两位。
【输出】
网线主管能够从库存的网线中切出指定数量的网线的最长长度(单位:米)。必须精确到厘米,即保留到小数点后两位。
若无法得到长度至少为1cm的指定数量的网线,则必须输出“0.00”(不包含引号)。
【输入样例】
4 11 8.02 7.43 4.57 5.39
【输出样例】
2.00
我的代码 (枚举):
#include
using namespace std;
int n;
int k;
int x=1;
int i;
int cut;
double mlen=0;
double lens[10100];
int main()
{
cin>>n>>k;
for(i=0;i=x)
{
if(x>mlen)
{
mlen=x;
}
x++;
}
else
{
break;
}
}
printf("%.2lf\n",mlen/100);
return 0;
}
未通过
测试点 | 结果 | 内存 | 时间 |
测试点1 | 答案错误 | 616KB | 3MS |
测试点2 | 答案错误 | 632KB | 5MS |
测试点3 | 答案错误 | 628KB | 4MS |
测试点4 | 运行超时 | 660KB | 998MS |
测试点5 | 答案错误 | 628KB | 3MS |
测试点6 | 答案错误 | 628KB | 4MS |
测试点7 | 运行超时 | 664KB | 997MS |
测试点8 | 答案正确 | 704KB | 15MS |
测试点9 | 运行超时 | 668KB | 1000MS |
测试点10 | 运行超时 | 644KB | 1003MS |
测试点11 | 运行超时 | 660KB | 1001MS |
测试点12 | 答案错误 | 664KB | 10MS |
测试点13 | 答案错误 | 620KB | 4MS |
很显然,超时了!
解析:
需要等长网线数量已知,要求尽可能长,可以枚举所有网线可能的长度len∈[0, max] , 计算出每种长度下网线的数量,时间复杂度为 O(max*n)。以样例数据为例,已知库存网线4根,长度分别是8.02, 7.43, 4.57, 5.39。现在需要11根等长的网线,尽可能长。从输出数据看,长度为2.00,也就是说,第一根分割出4根,第二根分割出3根,第三根分割出2根,第四根分割出2根,共11根。
枚举法,O(max*n)超时
方法二(递归):
代码(附上注释)
/*
提醒:
1,本道题目用二分解决(我不清楚用其他的因为我就是用的是二分)
2,注意精度问题
3,精确到厘米所以只要把输入乘以100储存到数组里即可(由题中所得的:若无法得到长度至少为1cm的指定数量的网线,则必须输出“0.00”(不包含引号)。)
*/
#include
int n,k;
int a[10200];//由于精度问题,把输入数据*100放入整数数组
int l=0, mid, r=0;
double t;
void erfen()
{
scanf("%d%d", &n, &k);
for (int i=1;i<=n;i++)
{
scanf("%lf", &t);
a[i] = (float)(t*100.0);
if(a[i]>r)
{
r=a[i];
}
}
r++;
}
int check(int x)
{
int ans=0;
for (int i=1;i<=n;i++)
{
ans += a[i] / x;
}
if(ans>=k)
{
return 1;
}
else
{
return 0;
}
}
void me()
{
while (l+1
去掉注释的代码(我知道某些人很喜欢在CSDN上找这样的代码):
#include
int n,k; int a[10200]; int l=0, mid, r=0; double t; void erfen() { scanf("%d%d", &n, &k); for (int i=1;i<=n;i++) { scanf("%lf", &t); a[i] = (float)(t*100.0); if(a[i]>r) { r=a[i]; } } r++; } int check(int x) { int ans=0; for (int i=1;i<=n;i++) { ans += a[i] / x; } if(ans>=k) { return 1; } else { return 0; } } void me() { while (l+1
结果:通过
测试点 | 结果 | 内存 | 时间 |
测试点1 | 答案正确 | 608KB | 3MS |
测试点2 | 答案正确 | 600KB | 7MS |
测试点3 | 答案正确 | 620KB | 7MS |
测试点4 | 答案正确 | 644KB | 7MS |
测试点5 | 答案正确 | 620KB | 4MS |
测试点6 | 答案正确 | 612KB | 4MS |
测试点7 | 答案正确 | 636KB | 7MS |
测试点8 | 答案正确 | 644KB | 6MS |
测试点9 | 答案正确 | 644KB | 7MS |
测试点10 | 答案正确 | 632KB | 6MS |
测试点11 | 答案正确 | 640KB | 7MS |
测试点12 | 答案正确 | 628KB | 5MS |
测试点13 | 答案正确 | 616KB | 4MS |
1281:最长上升子序列
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 23765 通过数: 12492【题目描述】
一个数的序列bibi,当b1
你的任务,就是对于给定的序列,求出最长上升子序列的长度。
【输入】
输入的第一行是序列的长度N(1≤N≤1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000。
【输出】
最长上升子序列的长度。
【输入样例】
7 1 7 3 5 9 4 8
【输出样例】
4
这道题是模型题,必须掌握
十分代码(经常出错的地方)
#include
using namespace std;
int n;
int ans;
int a[1010];
int b[1010];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
b[i]=1;
}
for(int i=2;i<=n;i++)
{
for(int j=1;ja[j])
{
b[i]=max(b[j]+1,b[i]);
}
else
{
ans=max(ans,b[i]);
}
}
}
cout<
结果:
未通过
测试点 | 结果 | 内存 | 时间 |
测试点1 | 答案正确 | 612KB | 7MS |
测试点2 | 答案错误 | 608KB | 7MS |
测试点3 | 答案错误 | 612KB | 7MS |
测试点4 | 答案错误 | 600KB | 6MS |
测试点5 | 答案错误 | 600KB | 4MS |
测试点6 | 答案错误 | 600KB | 5MS |
测试点7 | 答案错误 | 604KB | 6MS |
测试点8 | 答案错误 | 608KB | 5MS |
测试点9 | 答案错误 | 608KB | 5MS |
测试点10 | 答案错误 | 612KB | 6MS |
不通过原因:
满分代码(开始全面讲解){先不加注释,为了是给那些喜欢这样子的代码一个方便}
#include
using namespace std;
int n;
int ans;
int a[1010];
int b[1010];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
b[i]=1;
}
for(int i=2;i<=n;i++)
{
for(int j=1;ja[j])
{
b[i]=max(b[j]+1,b[i]);
}
else b[i]=b[i];
ans=max(ans,b[i]);
}
}
cout<
做题时的参考:
我看了很多博主的代码(此处为转载)
比如:
CSDN中的大神:
君义_noip
我看了他写的代码有四个方法:
1,状态定义为以i为结尾的最长上升子序列的长度
2,状态定义为以i为起始的最长上升子序列的长度
3,手写二分查找
4,使用stl lower_bound
原转载:
君义_noip大神这道题题解
我个人认为像这样的模型题不应该把代码写得这么长
这道题应该找到状态转移方程写,更好些(此处一个憨憨的微笑){我看CSDN里的大神博客很少用这种方法}
我个人做dp题目,都会考虑状态转移方程(可能有些大神有更好的方法,但状态转移方程是我做题的一个思路)
本题的状态转移方程为:(相信很多人看了我的源代码就知道了)
b[i]=max(b[j]+1,b[i]);
代码:(带注释)
#include
using namespace std;
int n;
int ans;
int a[1010];
int b[1010];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
b[i]=1;
}
for(int i=2;i<=n;i++)
{
for(int j=1;ja[j])
{
b[i]=max(b[j]+1,b[i]);//状态转移方程
}
else b[i]=b[i];
ans=max(ans,b[i]);
}
}
cout<
结果:通过
测试点 | 结果 | 内存 | 时间 |
测试点1 | 答案正确 | 604KB | 4MS |
测试点2 | 答案正确 | 604KB | 4MS |
测试点3 | 答案正确 | 604KB | 4MS |
测试点4 | 答案正确 | 608KB | 4MS |
测试点5 | 答案正确 | 608KB | 4MS |
测试点6 | 答案正确 | 600KB | 5MS |
测试点7 | 答案正确 | 596KB | 4MS |
测试点8 | 答案正确 | 608KB | 5MS |
测试点9 | 答案正确 | 604KB | 5MS |
测试点10 | 答案正确 | 604KB | 5MS |
1252:走迷宫
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 20939 通过数: 9571【题目描述】
一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。
给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。
【输入】
第一行是两个整数,R和C,代表迷宫的长和宽。( 1<= R,C <= 40)
接下来是R行,每行C个字符,代表整个迷宫。
空地格子用‘.’表示,有障碍物的格子用‘#’表示。
迷宫左上角和右下角都是‘.’。
【输出】
输出从左上角走到右下角至少要经过多少步(即至少要经过多少个空地格子)。计算步数要包括起点和终点。
【输入样例】
5 5 ..### #.... #.#.# #.#.# #.#..
【输出样例】
9
代码(附注释):
//1252:走迷宫
/*
解析:
一,思路和 Dungeon Master 一致。
二,我们要知道迷宫问题有几种:
1,问题一:迷宫是否能走通?(http://ybt.ssoier.cn:8088/problem_show.php?pid=1215 )
2,问题二:有多少种走法?
3,问题三:输出每条走法?
4,问题四:输出最短路径数?(http://bbs.codeaha.com/problem-12032.html)
5,问题五:是否能走通?(http://ybt.ssoier.cn:8088/problem_show.php?pid=1215)
6,问题六:最短步骤数(题目连接http://ybt.ssoier.cn:8088/problem_show.php?pid=1252) {就是这道题}
*/
#include
using namespace std;
int l,c,k,i,j,m,n,t;
char map[41][41];
int num,que[1601][3];//que[i][0],广搜队列中第i个探索的横坐标x,que[i][1]纵坐标y,que[i][2]为到这个点走了共多少步
int head,tail;//记录
int dx[4]={-1,0,1,0},
dy[4]={0,1,0,-1};//上、右、下、左
int main()
{
cin>>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
cin>>map[i][j];
head=0;
tail=1;
que[1][0]=1;//起始点
que[1][1]=1;
que[1][2]=1;//出发点
while(head
没有注释(还是那句话)
#include
using namespace std;
int l;
int c;
int k;
int i;
int j;
int m;
int n;
int t;
char nb[110][110];
int num;
int que[2010][10];
int head;
int tail;
int dx[4]={-1,0,1,0},
dy[4]={0,1,0,-1};
int main()
{
cin>>m>>n;
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
cin>>nb[i][j];
}
}
head=0;
tail=1;
que[1][0]=1;
que[1][1]=1;
que[1][2]=1;
while(head
结果:
通过
测试点 | 结果 | 内存 | 时间 |
测试点1 | 答案正确 | 608KB | 7MS |
测试点2 | 答案正确 | 636KB | 9MS |
测试点3 | 答案正确 | 620KB | 5MS |
测试点4 | 答案正确 | 632KB | 4MS |
测试点5 | 答案正确 | 624KB | 4MS |
测试点6 | 答案正确 | 604KB | 4MS |
测试点7 | 答案正确 | 628KB | 4MS |
测试点8 | 答案正确 | 612KB | 4MS |
测试点9 | 答案正确 | 640KB | 4MS |
测试点10 | 答案正确 | 616KB | 4MS |
1944:【08NOIP普及组】传球游戏
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 1955 通过数: 1164【题目描述】
上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。
游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再吹哨子时,传球停止,此时,拿着球没传出去的那个同学就是败者,要给大家表演一个节目。
聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法可以使得从小蛮手里开始传的球,传了m次后,又回到小蛮手里。两种传球被视作不同的方法,当且仅当这两种方法中,接到球的同学按照顺序组成的序列是不同的。比如3个同学1号、2号、3号,并假设小蛮为1号,球传了3次回到小蛮手里的方式有1->2->3->1和1->3->2->1,共两种。
【输入】
共一行,有两个空格隔开的整数n,m(3<=n<=30, 3<=m<=30)。
【输出】
共一行,有一个整数,表示符合题意的方法数。
【输入样例】
3 3
【输出样例】
2
【提示】
[限制]
40%的数据满足:3<=n<=30,1<=m<=20
100%的数据满足:3<=n<=30,1<=m<=30
本题目的重要信息:
n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意)
我们班有人竟用打表做出来了
应该是看到题目中的提示
借用这位优秀同学的代码
#include
using namespace std;
int n,m;
int main(){
cin>>n>>m;
if(n==3&&m==1)cout<<0;
else if(n==3&&m==2)cout<<2;
else if(n==3&&m==3)cout<<2;
else if(n==3&&m==4)cout<<6;
else if(n==3&&m==5)cout<<10;
else if(n==3&&m==6)cout<<22;
else if(n==3&&m==7)cout<<42;
else if(n==3&&m==8)cout<<86;
else if(n==3&&m==9)cout<<170;
else if(n==3&&m==10)cout<<342;
else if(n==3&&m==11)cout<<682;
else if(n==3&&m==12)cout<<1366;
else if(n==3&&m==13)cout<<2730;
else if(n==3&&m==14)cout<<5462;
else if(n==3&&m==15)cout<<10922;
else if(n==3&&m==16)cout<<21846;
else if(n==3&&m==17)cout<<43690;
else if(n==3&&m==18)cout<<87382;
else if(n==3&&m==19)cout<<174762;
else if(n==3&&m==20)cout<<349526;
else if(n==3&&m==21)cout<<699050;
else if(n==3&&m==22)cout<<1398102;
else if(n==3&&m==23)cout<<2796202;
else if(n==3&&m==24)cout<<5592406;
else if(n==3&&m==25)cout<<11184810;
else if(n==3&&m==26)cout<<22369622;
else if(n==3&&m==27)cout<<44739242;
else if(n==3&&m==28)cout<<89478486;
else if(n==3&&m==29)cout<<178956970;
else if(n==3&&m==30)cout<<357913942;
else if(n==4&&m==1)cout<<0;
else if(n==4&&m==2)cout<<2;
else if(n==4&&m==3)cout<<0;
else if(n==4&&m==4)cout<<8;
else if(n==4&&m==5)cout<<0;
else if(n==4&&m==6)cout<<32;
else if(n==4&&m==7)cout<<0;
else if(n==4&&m==8)cout<<128;
else if(n==4&&m==9)cout<<0;
else if(n==4&&m==10)cout<<512;
else if(n==4&&m==11)cout<<0;
else if(n==4&&m==12)cout<<2048;
else if(n==4&&m==13)cout<<0;
else if(n==4&&m==14)cout<<8192;
else if(n==4&&m==15)cout<<0;
else if(n==4&&m==16)cout<<32768;
else if(n==4&&m==17)cout<<0;
else if(n==4&&m==18)cout<<131072;
else if(n==4&&m==19)cout<<0;
else if(n==4&&m==20)cout<<524288;
else if(n==4&&m==21)cout<<0;
else if(n==4&&m==22)cout<<2097152;
else if(n==4&&m==23)cout<<0;
else if(n==4&&m==24)cout<<8388608;
else if(n==4&&m==25)cout<<0;
else if(n==4&&m==26)cout<<33554432;
else if(n==4&&m==27)cout<<0;
else if(n==4&&m==28)cout<<134217728;
else if(n==4&&m==29)cout<<0;
else if(n==4&&m==30)cout<<536870912;
else if(n==5&&m==1)cout<<0;
else if(n==5&&m==2)cout<<2;
else if(n==5&&m==3)cout<<0;
else if(n==5&&m==4)cout<<6;
else if(n==5&&m==5)cout<<2;
else if(n==5&&m==6)cout<<20;
else if(n==5&&m==7)cout<<14;
else if(n==5&&m==8)cout<<70;
else if(n==5&&m==9)cout<<72;
else if(n==5&&m==10)cout<<254;
else if(n==5&&m==11)cout<<330;
else if(n==5&&m==12)cout<<948;
else if(n==5&&m==13)cout<<1430;
else if(n==5&&m==14)cout<<3614;
else if(n==5&&m==15)cout<<6008;
else if(n==5&&m==16)cout<<13990;
else if(n==5&&m==17)cout<<24786;
else if(n==5&&m==18)cout<<54740;
else if(n==5&&m==19)cout<<101118;
else if(n==5&&m==20)cout<<215766;
else if(n==5&&m==21)cout<<409640;
else if(n==5&&m==22)cout<<854702;
else if(n==5&&m==23)cout<<1652090;
else if(n==5&&m==24)cout<<3396916;
else if(n==5&&m==25)cout<<6643782;
else if(n==5&&m==26)cout<<13530350;
else if(n==5&&m==27)cout<<26667864;
else if(n==5&&m==28)cout<<53971350;
else if(n==5&&m==29)cout<<106914242;
else if(n==5&&m==30)cout<<215492564;
else if(n==6&&m==1)cout<<0;
else if(n==6&&m==2)cout<<2;
else if(n==6&&m==3)cout<<0;
else if(n==6&&m==4)cout<<6;
else if(n==6&&m==5)cout<<0;
else if(n==6&&m==6)cout<<22;
else if(n==6&&m==7)cout<<0;
else if(n==6&&m==8)cout<<86;
else if(n==6&&m==9)cout<<0;
else if(n==6&&m==10)cout<<342;
else if(n==6&&m==11)cout<<0;
else if(n==6&&m==12)cout<<1366;
else if(n==6&&m==13)cout<<0;
else if(n==6&&m==14)cout<<5462;
else if(n==6&&m==15)cout<<0;
else if(n==6&&m==16)cout<<21846;
else if(n==6&&m==17)cout<<0;
else if(n==6&&m==18)cout<<87382;
else if(n==6&&m==19)cout<<0;
else if(n==6&&m==20)cout<<349526;
else if(n==6&&m==21)cout<<0;
else if(n==6&&m==22)cout<<1398102;
else if(n==6&&m==23)cout<<0;
else if(n==6&&m==24)cout<<5592406;
else if(n==6&&m==25)cout<<0;
else if(n==6&&m==26)cout<<22369622;
else if(n==6&&m==27)cout<<0;
else if(n==6&&m==28)cout<<89478486;
else if(n==6&&m==29)cout<<0;
else if(n==6&&m==30)cout<<357913942;
else if(n==7&&m==1)cout<<0;
else if(n==7&&m==2)cout<<2;
else if(n==7&&m==3)cout<<0;
else if(n==7&&m==4)cout<<6;
else if(n==7&&m==5)cout<<0;
else if(n==7&&m==6)cout<<20;
else if(n==7&&m==7)cout<<2;
else if(n==7&&m==8)cout<<70;
else if(n==7&&m==9)cout<<18;
else if(n==7&&m==10)cout<<252;
else if(n==7&&m==11)cout<<110;
else if(n==7&&m==12)cout<<924;
else if(n==7&&m==13)cout<<572;
else if(n==7&&m==14)cout<<3434;
else if(n==7&&m==15)cout<<2730;
else if(n==7&&m==16)cout<<12902;
else if(n==7&&m==17)cout<<12376;
else if(n==7&&m==18)cout<<48926;
else if(n==7&&m==19)cout<<54264;
else if(n==7&&m==20)cout<<187036;
else if(n==7&&m==21)cout<<232562;
else if(n==7&&m==22)cout<<720062;
else if(n==7&&m==23)cout<<980674;
else if(n==7&&m==24)cout<<2789164;
else if(n==7&&m==25)cout<<4086550;
else if(n==7&&m==26)cout<<10861060;
else if(n==7&&m==27)cout<<16878420;
else if(n==7&&m==28)cout<<42484682;
else if(n==7&&m==29)cout<<69242082;
else if(n==7&&m==30)cout<<166823430;
else if(n==8&&m==1)cout<<0;
else if(n==8&&m==2)cout<<2;
else if(n==8&&m==3)cout<<0;
else if(n==8&&m==4)cout<<6;
else if(n==8&&m==5)cout<<0;
else if(n==8&&m==6)cout<<20;
else if(n==8&&m==7)cout<<0;
else if(n==8&&m==8)cout<<72;
else if(n==8&&m==9)cout<<0;
else if(n==8&&m==10)cout<<272;
else if(n==8&&m==11)cout<<0;
else if(n==8&&m==12)cout<<1056;
else if(n==8&&m==13)cout<<0;
else if(n==8&&m==14)cout<<4160;
else if(n==8&&m==15)cout<<0;
else if(n==8&&m==16)cout<<16512;
else if(n==8&&m==17)cout<<0;
else if(n==8&&m==18)cout<<65792;
else if(n==8&&m==19)cout<<0;
else if(n==8&&m==20)cout<<262656;
else if(n==8&&m==21)cout<<0;
else if(n==8&&m==22)cout<<1049600;
else if(n==8&&m==23)cout<<0;
else if(n==8&&m==24)cout<<4196352;
else if(n==8&&m==25)cout<<0;
else if(n==8&&m==26)cout<<16781312;
else if(n==8&&m==27)cout<<0;
else if(n==8&&m==28)cout<<67117056;
else if(n==8&&m==29)cout<<0;
else if(n==8&&m==30)cout<<268451840;
else if(n==9&&m==1)cout<<0;
else if(n==9&&m==2)cout<<2;
else if(n==9&&m==3)cout<<0;
else if(n==9&&m==4)cout<<6;
else if(n==9&&m==5)cout<<0;
else if(n==9&&m==6)cout<<20;
else if(n==9&&m==7)cout<<0;
else if(n==9&&m==8)cout<<70;
else if(n==9&&m==9)cout<<2;
else if(n==9&&m==10)cout<<252;
else if(n==9&&m==11)cout<<22;
else if(n==9&&m==12)cout<<924;
else if(n==9&&m==13)cout<<156;
else if(n==9&&m==14)cout<<3432;
else if(n==9&&m==15)cout<<910;
else if(n==9&&m==16)cout<<12870;
else if(n==9&&m==17)cout<<4760;
else if(n==9&&m==18)cout<<48622;
else if(n==9&&m==19)cout<<23256;
else if(n==9&&m==20)cout<<184796;
else if(n==9&&m==21)cout<<108528;
else if(n==9&&m==22)cout<<705894;
else if(n==9&&m==23)cout<<490314;
else if(n==9&&m==24)cout<<2708204;
else if(n==9&&m==25)cout<<2163150;
else if(n==9&&m==26)cout<<10430500;
else if(n==9&&m==27)cout<<9373652;
else if(n==9&&m==28)cout<<40313160;
else if(n==9&&m==29)cout<<40060078;
else if(n==9&&m==30)cout<<156305070;
else if(n==10&&m==1)cout<<0;
else if(n==10&&m==2)cout<<2;
else if(n==10&&m==3)cout<<0;
else if(n==10&&m==4)cout<<6;
else if(n==10&&m==5)cout<<0;
else if(n==10&&m==6)cout<<20;
else if(n==10&&m==7)cout<<0;
else if(n==10&&m==8)cout<<70;
else if(n==10&&m==9)cout<<0;
else if(n==10&&m==10)cout<<254;
else if(n==10&&m==11)cout<<0;
else if(n==10&&m==12)cout<<948;
else if(n==10&&m==13)cout<<0;
else if(n==10&&m==14)cout<<3614;
else if(n==10&&m==15)cout<<0;
else if(n==10&&m==16)cout<<13990;
else if(n==10&&m==17)cout<<0;
else if(n==10&&m==18)cout<<54740;
else if(n==10&&m==19)cout<<0;
else if(n==10&&m==20)cout<<215766;
else if(n==10&&m==21)cout<<0;
else if(n==10&&m==22)cout<<854702;
else if(n==10&&m==23)cout<<0;
else if(n==10&&m==24)cout<<3396916;
else if(n==10&&m==25)cout<<0;
else if(n==10&&m==26)cout<<13530350;
else if(n==10&&m==27)cout<<0;
else if(n==10&&m==28)cout<<53971350;
else if(n==10&&m==29)cout<<0;
else if(n==10&&m==30)cout<<215492564;
else if(n==11&&m==1)cout<<0;
else if(n==11&&m==2)cout<<2;
else if(n==11&&m==3)cout<<0;
else if(n==11&&m==4)cout<<6;
else if(n==11&&m==5)cout<<0;
else if(n==11&&m==6)cout<<20;
else if(n==11&&m==7)cout<<0;
else if(n==11&&m==8)cout<<70;
else if(n==11&&m==9)cout<<0;
else if(n==11&&m==10)cout<<252;
else if(n==11&&m==11)cout<<2;
else if(n==11&&m==12)cout<<924;
else if(n==11&&m==13)cout<<26;
else if(n==11&&m==14)cout<<3432;
else if(n==11&&m==15)cout<<210;
else if(n==11&&m==16)cout<<12870;
else if(n==11&&m==17)cout<<1360;
else if(n==11&&m==18)cout<<48620;
else if(n==11&&m==19)cout<<7752;
else if(n==11&&m==20)cout<<184756;
else if(n==11&&m==21)cout<<40698;
else if(n==11&&m==22)cout<<705434;
else if(n==11&&m==23)cout<<201894;
else if(n==11&&m==24)cout<<2704204;
else if(n==11&&m==25)cout<<961400;
else if(n==11&&m==26)cout<<10401250;
else if(n==11&&m==27)cout<<4440150;
else if(n==11&&m==28)cout<<40123152;
else if(n==11&&m==29)cout<<20030010;
else if(n==11&&m==30)cout<<155172330;
else if(n==12&&m==1)cout<<0;
else if(n==12&&m==2)cout<<2;
else if(n==12&&m==3)cout<<0;
else if(n==12&&m==4)cout<<6;
else if(n==12&&m==5)cout<<0;
else if(n==12&&m==6)cout<<20;
else if(n==12&&m==7)cout<<0;
else if(n==12&&m==8)cout<<70;
else if(n==12&&m==9)cout<<0;
else if(n==12&&m==10)cout<<252;
else if(n==12&&m==11)cout<<0;
else if(n==12&&m==12)cout<<926;
else if(n==12&&m==13)cout<<0;
else if(n==12&&m==14)cout<<3460;
else if(n==12&&m==15)cout<<0;
else if(n==12&&m==16)cout<<13110;
else if(n==12&&m==17)cout<<0;
else if(n==12&&m==18)cout<<50252;
else if(n==12&&m==19)cout<<0;
else if(n==12&&m==20)cout<<194446;
else if(n==12&&m==21)cout<<0;
else if(n==12&&m==22)cout<<758100;
else if(n==12&&m==23)cout<<0;
else if(n==12&&m==24)cout<<2973350;
else if(n==12&&m==25)cout<<0;
else if(n==12&&m==26)cout<<11716252;
else if(n==12&&m==27)cout<<0;
else if(n==12&&m==28)cout<<46333566;
else if(n==12&&m==29)cout<<0;
else if(n==12&&m==30)cout<<183739940;
else if(n==13&&m==1)cout<<0;
else if(n==13&&m==2)cout<<2;
else if(n==13&&m==3)cout<<0;
else if(n==13&&m==4)cout<<6;
else if(n==13&&m==5)cout<<0;
else if(n==13&&m==6)cout<<20;
else if(n==13&&m==7)cout<<0;
else if(n==13&&m==8)cout<<70;
else if(n==13&&m==9)cout<<0;
else if(n==13&&m==10)cout<<252;
else if(n==13&&m==11)cout<<0;
else if(n==13&&m==12)cout<<924;
else if(n==13&&m==13)cout<<2;
else if(n==13&&m==14)cout<<3432;
else if(n==13&&m==15)cout<<30;
else if(n==13&&m==16)cout<<12870;
else if(n==13&&m==17)cout<<272;
else if(n==13&&m==18)cout<<48620;
else if(n==13&&m==19)cout<<1938;
else if(n==13&&m==20)cout<<184756;
else if(n==13&&m==21)cout<<11970;
else if(n==13&&m==22)cout<<705432;
else if(n==13&&m==23)cout<<67298;
else if(n==13&&m==24)cout<<2704156;
else if(n==13&&m==25)cout<<354200;
else if(n==13&&m==26)cout<<10400602;
else if(n==13&&m==27)cout<<1776060;
else if(n==13&&m==28)cout<<40116656;
else if(n==13&&m==29)cout<<8584290;
else if(n==13&&m==30)cout<<155118390;
else if(n==14&&m==1)cout<<0;
else if(n==14&&m==2)cout<<2;
else if(n==14&&m==3)cout<<0;
else if(n==14&&m==4)cout<<6;
else if(n==14&&m==5)cout<<0;
else if(n==14&&m==6)cout<<20;
else if(n==14&&m==7)cout<<0;
else if(n==14&&m==8)cout<<70;
else if(n==14&&m==9)cout<<0;
else if(n==14&&m==10)cout<<252;
else if(n==14&&m==11)cout<<0;
else if(n==14&&m==12)cout<<924;
else if(n==14&&m==13)cout<<0;
else if(n==14&&m==14)cout<<3434;
else if(n==14&&m==15)cout<<0;
else if(n==14&&m==16)cout<<12902;
else if(n==14&&m==17)cout<<0;
else if(n==14&&m==18)cout<<48926;
else if(n==14&&m==19)cout<<0;
else if(n==14&&m==20)cout<<187036;
else if(n==14&&m==21)cout<<0;
else if(n==14&&m==22)cout<<720062;
else if(n==14&&m==23)cout<<0;
else if(n==14&&m==24)cout<<2789164;
else if(n==14&&m==25)cout<<0;
else if(n==14&&m==26)cout<<10861060;
else if(n==14&&m==27)cout<<0;
else if(n==14&&m==28)cout<<42484682;
else if(n==14&&m==29)cout<<0;
else if(n==14&&m==30)cout<<166823430;
else if(n==15&&m==1)cout<<0;
else if(n==15&&m==2)cout<<2;
else if(n==15&&m==3)cout<<0;
else if(n==15&&m==4)cout<<6;
else if(n==15&&m==5)cout<<0;
else if(n==15&&m==6)cout<<20;
else if(n==15&&m==7)cout<<0;
else if(n==15&&m==8)cout<<70;
else if(n==15&&m==9)cout<<0;
else if(n==15&&m==10)cout<<252;
else if(n==15&&m==11)cout<<0;
else if(n==15&&m==12)cout<<924;
else if(n==15&&m==13)cout<<0;
else if(n==15&&m==14)cout<<3432;
else if(n==15&&m==15)cout<<2;
else if(n==15&&m==16)cout<<12870;
else if(n==15&&m==17)cout<<34;
else if(n==15&&m==18)cout<<48620;
else if(n==15&&m==19)cout<<342;
else if(n==15&&m==20)cout<<184756;
else if(n==15&&m==21)cout<<2660;
else if(n==15&&m==22)cout<<705432;
else if(n==15&&m==23)cout<<17710;
else if(n==15&&m==24)cout<<2704156;
else if(n==15&&m==25)cout<<106260;
else if(n==15&&m==26)cout<<10400600;
else if(n==15&&m==27)cout<<592020;
else if(n==15&&m==28)cout<<40116600;
else if(n==15&&m==29)cout<<3121560;
else if(n==15&&m==30)cout<<155117522;
else if(n==16&&m==1)cout<<0;
else if(n==16&&m==2)cout<<2;
else if(n==16&&m==3)cout<<0;
else if(n==16&&m==4)cout<<6;
else if(n==16&&m==5)cout<<0;
else if(n==16&&m==6)cout<<20;
else if(n==16&&m==7)cout<<0;
else if(n==16&&m==8)cout<<70;
else if(n==16&&m==9)cout<<0;
else if(n==16&&m==10)cout<<252;
else if(n==16&&m==11)cout<<0;
else if(n==16&&m==12)cout<<924;
else if(n==16&&m==13)cout<<0;
else if(n==16&&m==14)cout<<3432;
else if(n==16&&m==15)cout<<0;
else if(n==16&&m==16)cout<<12872;
else if(n==16&&m==17)cout<<0;
else if(n==16&&m==18)cout<<48656;
else if(n==16&&m==19)cout<<0;
else if(n==16&&m==20)cout<<185136;
else if(n==16&&m==21)cout<<0;
else if(n==16&&m==22)cout<<708512;
else if(n==16&&m==23)cout<<0;
else if(n==16&&m==24)cout<<2725408;
else if(n==16&&m==25)cout<<0;
else if(n==16&&m==26)cout<<10532160;
else if(n==16&&m==27)cout<<0;
else if(n==16&&m==28)cout<<40870080;
else if(n==16&&m==29)cout<<0;
else if(n==16&&m==30)cout<<159189120;
else if(n==17&&m==1)cout<<0;
else if(n==17&&m==2)cout<<2;
else if(n==17&&m==3)cout<<0;
else if(n==17&&m==4)cout<<6;
else if(n==17&&m==5)cout<<0;
else if(n==17&&m==6)cout<<20;
else if(n==17&&m==7)cout<<0;
else if(n==17&&m==8)cout<<70;
else if(n==17&&m==9)cout<<0;
else if(n==17&&m==10)cout<<252;
else if(n==17&&m==11)cout<<0;
else if(n==17&&m==12)cout<<924;
else if(n==17&&m==13)cout<<0;
else if(n==17&&m==14)cout<<3432;
else if(n==17&&m==15)cout<<0;
else if(n==17&&m==16)cout<<12870;
else if(n==17&&m==17)cout<<2;
else if(n==17&&m==18)cout<<48620;
else if(n==17&&m==19)cout<<38;
else if(n==17&&m==20)cout<<184756;
else if(n==17&&m==21)cout<<420;
else if(n==17&&m==22)cout<<705432;
else if(n==17&&m==23)cout<<3542;
else if(n==17&&m==24)cout<<2704156;
else if(n==17&&m==25)cout<<25300;
else if(n==17&&m==26)cout<<10400600;
else if(n==17&&m==27)cout<<161460;
else if(n==17&&m==28)cout<<40116600;
else if(n==17&&m==29)cout<<950040;
else if(n==17&&m==30)cout<<155117520;
else if(n==18&&m==1)cout<<0;
else if(n==18&&m==2)cout<<2;
else if(n==18&&m==3)cout<<0;
else if(n==18&&m==4)cout<<6;
else if(n==18&&m==5)cout<<0;
else if(n==18&&m==6)cout<<20;
else if(n==18&&m==7)cout<<0;
else if(n==18&&m==8)cout<<70;
else if(n==18&&m==9)cout<<0;
else if(n==18&&m==10)cout<<252;
else if(n==18&&m==11)cout<<0;
else if(n==18&&m==12)cout<<924;
else if(n==18&&m==13)cout<<0;
else if(n==18&&m==14)cout<<3432;
else if(n==18&&m==15)cout<<0;
else if(n==18&&m==16)cout<<12870;
else if(n==18&&m==17)cout<<0;
else if(n==18&&m==18)cout<<48622;
else if(n==18&&m==19)cout<<0;
else if(n==18&&m==20)cout<<184796;
else if(n==18&&m==21)cout<<0;
else if(n==18&&m==22)cout<<705894;
else if(n==18&&m==23)cout<<0;
else if(n==18&&m==24)cout<<2708204;
else if(n==18&&m==25)cout<<0;
else if(n==18&&m==26)cout<<10430500;
else if(n==18&&m==27)cout<<0;
else if(n==18&&m==28)cout<<40313160;
else if(n==18&&m==29)cout<<0;
else if(n==18&&m==30)cout<<156305070;
else if(n==19&&m==1)cout<<0;
else if(n==19&&m==2)cout<<2;
else if(n==19&&m==3)cout<<0;
else if(n==19&&m==4)cout<<6;
else if(n==19&&m==5)cout<<0;
else if(n==19&&m==6)cout<<20;
else if(n==19&&m==7)cout<<0;
else if(n==19&&m==8)cout<<70;
else if(n==19&&m==9)cout<<0;
else if(n==19&&m==10)cout<<252;
else if(n==19&&m==11)cout<<0;
else if(n==19&&m==12)cout<<924;
else if(n==19&&m==13)cout<<0;
else if(n==19&&m==14)cout<<3432;
else if(n==19&&m==15)cout<<0;
else if(n==19&&m==16)cout<<12870;
else if(n==19&&m==17)cout<<0;
else if(n==19&&m==18)cout<<48620;
else if(n==19&&m==19)cout<<2;
else if(n==19&&m==20)cout<<184756;
else if(n==19&&m==21)cout<<42;
else if(n==19&&m==22)cout<<705432;
else if(n==19&&m==23)cout<<506;
else if(n==19&&m==24)cout<<2704156;
else if(n==19&&m==25)cout<<4600;
else if(n==19&&m==26)cout<<10400600;
else if(n==19&&m==27)cout<<35100;
else if(n==19&&m==28)cout<<40116600;
else if(n==19&&m==29)cout<<237510;
else if(n==19&&m==30)cout<<155117520;
else if(n==20&&m==1)cout<<0;
else if(n==20&&m==2)cout<<2;
else if(n==20&&m==3)cout<<0;
else if(n==20&&m==4)cout<<6;
else if(n==20&&m==5)cout<<0;
else if(n==20&&m==6)cout<<20;
else if(n==20&&m==7)cout<<0;
else if(n==20&&m==8)cout<<70;
else if(n==20&&m==9)cout<<0;
else if(n==20&&m==10)cout<<252;
else if(n==20&&m==11)cout<<0;
else if(n==20&&m==12)cout<<924;
else if(n==20&&m==13)cout<<0;
else if(n==20&&m==14)cout<<3432;
else if(n==20&&m==15)cout<<0;
else if(n==20&&m==16)cout<<12870;
else if(n==20&&m==17)cout<<0;
else if(n==20&&m==18)cout<<48620;
else if(n==20&&m==19)cout<<0;
else if(n==20&&m==20)cout<<184758;
else if(n==20&&m==21)cout<<0;
else if(n==20&&m==22)cout<<705476;
else if(n==20&&m==23)cout<<0;
else if(n==20&&m==24)cout<<2704708;
else if(n==20&&m==25)cout<<0;
else if(n==20&&m==26)cout<<10405800;
else if(n==20&&m==27)cout<<0;
else if(n==20&&m==28)cout<<40157550;
else if(n==20&&m==29)cout<<0;
else if(n==20&&m==30)cout<<155402532;
else if(n==21&&m==1)cout<<0;
else if(n==21&&m==2)cout<<2;
else if(n==21&&m==3)cout<<0;
else if(n==21&&m==4)cout<<6;
else if(n==21&&m==5)cout<<0;
else if(n==21&&m==6)cout<<20;
else if(n==21&&m==7)cout<<0;
else if(n==21&&m==8)cout<<70;
else if(n==21&&m==9)cout<<0;
else if(n==21&&m==10)cout<<252;
else if(n==21&&m==11)cout<<0;
else if(n==21&&m==12)cout<<924;
else if(n==21&&m==13)cout<<0;
else if(n==21&&m==14)cout<<3432;
else if(n==21&&m==15)cout<<0;
else if(n==21&&m==16)cout<<12870;
else if(n==21&&m==17)cout<<0;
else if(n==21&&m==18)cout<<48620;
else if(n==21&&m==19)cout<<0;
else if(n==21&&m==20)cout<<184756;
else if(n==21&&m==21)cout<<2;
else if(n==21&&m==22)cout<<705432;
else if(n==21&&m==23)cout<<46;
else if(n==21&&m==24)cout<<2704156;
else if(n==21&&m==25)cout<<600;
else if(n==21&&m==26)cout<<10400600;
else if(n==21&&m==27)cout<<5850;
else if(n==21&&m==28)cout<<40116600;
else if(n==21&&m==29)cout<<47502;
else if(n==21&&m==30)cout<<155117520;
else if(n==22&&m==1)cout<<0;
else if(n==22&&m==2)cout<<2;
else if(n==22&&m==3)cout<<0;
else if(n==22&&m==4)cout<<6;
else if(n==22&&m==5)cout<<0;
else if(n==22&&m==6)cout<<20;
else if(n==22&&m==7)cout<<0;
else if(n==22&&m==8)cout<<70;
else if(n==22&&m==9)cout<<0;
else if(n==22&&m==10)cout<<252;
else if(n==22&&m==11)cout<<0;
else if(n==22&&m==12)cout<<924;
else if(n==22&&m==13)cout<<0;
else if(n==22&&m==14)cout<<3432;
else if(n==22&&m==15)cout<<0;
else if(n==22&&m==16)cout<<12870;
else if(n==22&&m==17)cout<<0;
else if(n==22&&m==18)cout<<48620;
else if(n==22&&m==19)cout<<0;
else if(n==22&&m==20)cout<<184756;
else if(n==22&&m==21)cout<<0;
else if(n==22&&m==22)cout<<705434;
else if(n==22&&m==23)cout<<0;
else if(n==22&&m==24)cout<<2704204;
else if(n==22&&m==25)cout<<0;
else if(n==22&&m==26)cout<<10401250;
else if(n==22&&m==27)cout<<0;
else if(n==22&&m==28)cout<<40123152;
else if(n==22&&m==29)cout<<0;
else if(n==22&&m==30)cout<<155172330;
else if(n==23&&m==1)cout<<0;
else if(n==23&&m==2)cout<<2;
else if(n==23&&m==3)cout<<0;
else if(n==23&&m==4)cout<<6;
else if(n==23&&m==5)cout<<0;
else if(n==23&&m==6)cout<<20;
else if(n==23&&m==7)cout<<0;
else if(n==23&&m==8)cout<<70;
else if(n==23&&m==9)cout<<0;
else if(n==23&&m==10)cout<<252;
else if(n==23&&m==11)cout<<0;
else if(n==23&&m==12)cout<<924;
else if(n==23&&m==13)cout<<0;
else if(n==23&&m==14)cout<<3432;
else if(n==23&&m==15)cout<<0;
else if(n==23&&m==16)cout<<12870;
else if(n==23&&m==17)cout<<0;
else if(n==23&&m==18)cout<<48620;
else if(n==23&&m==19)cout<<0;
else if(n==23&&m==20)cout<<184756;
else if(n==23&&m==21)cout<<0;
else if(n==23&&m==22)cout<<705432;
else if(n==23&&m==23)cout<<2;
else if(n==23&&m==24)cout<<2704156;
else if(n==23&&m==25)cout<<50;
else if(n==23&&m==26)cout<<10400600;
else if(n==23&&m==27)cout<<702;
else if(n==23&&m==28)cout<<40116600;
else if(n==23&&m==29)cout<<7308;
else if(n==23&&m==30)cout<<155117520;
else if(n==24&&m==1)cout<<0;
else if(n==24&&m==2)cout<<2;
else if(n==24&&m==3)cout<<0;
else if(n==24&&m==4)cout<<6;
else if(n==24&&m==5)cout<<0;
else if(n==24&&m==6)cout<<20;
else if(n==24&&m==7)cout<<0;
else if(n==24&&m==8)cout<<70;
else if(n==24&&m==9)cout<<0;
else if(n==24&&m==10)cout<<252;
else if(n==24&&m==11)cout<<0;
else if(n==24&&m==12)cout<<924;
else if(n==24&&m==13)cout<<0;
else if(n==24&&m==14)cout<<3432;
else if(n==24&&m==15)cout<<0;
else if(n==24&&m==16)cout<<12870;
else if(n==24&&m==17)cout<<0;
else if(n==24&&m==18)cout<<48620;
else if(n==24&&m==19)cout<<0;
else if(n==24&&m==20)cout<<184756;
else if(n==24&&m==21)cout<<0;
else if(n==24&&m==22)cout<<705432;
else if(n==24&&m==23)cout<<0;
else if(n==24&&m==24)cout<<2704158;
else if(n==24&&m==25)cout<<0;
else if(n==24&&m==26)cout<<10400652;
else if(n==24&&m==27)cout<<0;
else if(n==24&&m==28)cout<<40117356;
else if(n==24&&m==29)cout<<0;
else if(n==24&&m==30)cout<<155125640;
else if(n==25&&m==1)cout<<0;
else if(n==25&&m==2)cout<<2;
else if(n==25&&m==3)cout<<0;
else if(n==25&&m==4)cout<<6;
else if(n==25&&m==5)cout<<0;
else if(n==25&&m==6)cout<<20;
else if(n==25&&m==7)cout<<0;
else if(n==25&&m==8)cout<<70;
else if(n==25&&m==9)cout<<0;
else if(n==25&&m==10)cout<<252;
else if(n==25&&m==11)cout<<0;
else if(n==25&&m==12)cout<<924;
else if(n==25&&m==13)cout<<0;
else if(n==25&&m==14)cout<<3432;
else if(n==25&&m==15)cout<<0;
else if(n==25&&m==16)cout<<12870;
else if(n==25&&m==17)cout<<0;
else if(n==25&&m==18)cout<<48620;
else if(n==25&&m==19)cout<<0;
else if(n==25&&m==20)cout<<184756;
else if(n==25&&m==21)cout<<0;
else if(n==25&&m==22)cout<<705432;
else if(n==25&&m==23)cout<<0;
else if(n==25&&m==24)cout<<2704156;
else if(n==25&&m==25)cout<<2;
else if(n==25&&m==26)cout<<10400600;
else if(n==25&&m==27)cout<<54;
else if(n==25&&m==28)cout<<40116600;
else if(n==25&&m==29)cout<<812;
else if(n==25&&m==30)cout<<155117520;
else if(n==26&&m==1)cout<<0;
else if(n==26&&m==2)cout<<2;
else if(n==26&&m==3)cout<<0;
else if(n==26&&m==4)cout<<6;
else if(n==26&&m==5)cout<<0;
else if(n==26&&m==6)cout<<20;
else if(n==26&&m==7)cout<<0;
else if(n==26&&m==8)cout<<70;
else if(n==26&&m==9)cout<<0;
else if(n==26&&m==10)cout<<252;
else if(n==26&&m==11)cout<<0;
else if(n==26&&m==12)cout<<924;
else if(n==26&&m==13)cout<<0;
else if(n==26&&m==14)cout<<3432;
else if(n==26&&m==15)cout<<0;
else if(n==26&&m==16)cout<<12870;
else if(n==26&&m==17)cout<<0;
else if(n==26&&m==18)cout<<48620;
else if(n==26&&m==19)cout<<0;
else if(n==26&&m==20)cout<<184756;
else if(n==26&&m==21)cout<<0;
else if(n==26&&m==22)cout<<705432;
else if(n==26&&m==23)cout<<0;
else if(n==26&&m==24)cout<<2704156;
else if(n==26&&m==25)cout<<0;
else if(n==26&&m==26)cout<<10400602;
else if(n==26&&m==27)cout<<0;
else if(n==26&&m==28)cout<<40116656;
else if(n==26&&m==29)cout<<0;
else if(n==26&&m==30)cout<<155118390;
else if(n==27&&m==1)cout<<0;
else if(n==27&&m==2)cout<<2;
else if(n==27&&m==3)cout<<0;
else if(n==27&&m==4)cout<<6;
else if(n==27&&m==5)cout<<0;
else if(n==27&&m==6)cout<<20;
else if(n==27&&m==7)cout<<0;
else if(n==27&&m==8)cout<<70;
else if(n==27&&m==9)cout<<0;
else if(n==27&&m==10)cout<<252;
else if(n==27&&m==11)cout<<0;
else if(n==27&&m==12)cout<<924;
else if(n==27&&m==13)cout<<0;
else if(n==27&&m==14)cout<<3432;
else if(n==27&&m==15)cout<<0;
else if(n==27&&m==16)cout<<12870;
else if(n==27&&m==17)cout<<0;
else if(n==27&&m==18)cout<<48620;
else if(n==27&&m==19)cout<<0;
else if(n==27&&m==20)cout<<184756;
else if(n==27&&m==21)cout<<0;
else if(n==27&&m==22)cout<<705432;
else if(n==27&&m==23)cout<<0;
else if(n==27&&m==24)cout<<2704156;
else if(n==27&&m==25)cout<<0;
else if(n==27&&m==26)cout<<10400600;
else if(n==27&&m==27)cout<<2;
else if(n==27&&m==28)cout<<40116600;
else if(n==27&&m==29)cout<<58;
else if(n==27&&m==30)cout<<155117520;
else if(n==28&&m==1)cout<<0;
else if(n==28&&m==2)cout<<2;
else if(n==28&&m==3)cout<<0;
else if(n==28&&m==4)cout<<6;
else if(n==28&&m==5)cout<<0;
else if(n==28&&m==6)cout<<20;
else if(n==28&&m==7)cout<<0;
else if(n==28&&m==8)cout<<70;
else if(n==28&&m==9)cout<<0;
else if(n==28&&m==10)cout<<252;
else if(n==28&&m==11)cout<<0;
else if(n==28&&m==12)cout<<924;
else if(n==28&&m==13)cout<<0;
else if(n==28&&m==14)cout<<3432;
else if(n==28&&m==15)cout<<0;
else if(n==28&&m==16)cout<<12870;
else if(n==28&&m==17)cout<<0;
else if(n==28&&m==18)cout<<48620;
else if(n==28&&m==19)cout<<0;
else if(n==28&&m==20)cout<<184756;
else if(n==28&&m==21)cout<<0;
else if(n==28&&m==22)cout<<705432;
else if(n==28&&m==23)cout<<0;
else if(n==28&&m==24)cout<<2704156;
else if(n==28&&m==25)cout<<0;
else if(n==28&&m==26)cout<<10400600;
else if(n==28&&m==27)cout<<0;
else if(n==28&&m==28)cout<<40116602;
else if(n==28&&m==29)cout<<0;
else if(n==28&&m==30)cout<<155117580;
else if(n==29&&m==1)cout<<0;
else if(n==29&&m==2)cout<<2;
else if(n==29&&m==3)cout<<0;
else if(n==29&&m==4)cout<<6;
else if(n==29&&m==5)cout<<0;
else if(n==29&&m==6)cout<<20;
else if(n==29&&m==7)cout<<0;
else if(n==29&&m==8)cout<<70;
else if(n==29&&m==9)cout<<0;
else if(n==29&&m==10)cout<<252;
else if(n==29&&m==11)cout<<0;
else if(n==29&&m==12)cout<<924;
else if(n==29&&m==13)cout<<0;
else if(n==29&&m==14)cout<<3432;
else if(n==29&&m==15)cout<<0;
else if(n==29&&m==16)cout<<12870;
else if(n==29&&m==17)cout<<0;
else if(n==29&&m==18)cout<<48620;
else if(n==29&&m==19)cout<<0;
else if(n==29&&m==20)cout<<184756;
else if(n==29&&m==21)cout<<0;
else if(n==29&&m==22)cout<<705432;
else if(n==29&&m==23)cout<<0;
else if(n==29&&m==24)cout<<2704156;
else if(n==29&&m==25)cout<<0;
else if(n==29&&m==26)cout<<10400600;
else if(n==29&&m==27)cout<<0;
else if(n==29&&m==28)cout<<40116600;
else if(n==29&&m==29)cout<<2;
else if(n==29&&m==30)cout<<155117520;
else if(n==30&&m==1)cout<<0;
else if(n==30&&m==2)cout<<2;
else if(n==30&&m==3)cout<<0;
else if(n==30&&m==4)cout<<6;
else if(n==30&&m==5)cout<<0;
else if(n==30&&m==6)cout<<20;
else if(n==30&&m==7)cout<<0;
else if(n==30&&m==8)cout<<70;
else if(n==30&&m==9)cout<<0;
else if(n==30&&m==10)cout<<252;
else if(n==30&&m==11)cout<<0;
else if(n==30&&m==12)cout<<924;
else if(n==30&&m==13)cout<<0;
else if(n==30&&m==14)cout<<3432;
else if(n==30&&m==15)cout<<0;
else if(n==30&&m==16)cout<<12870;
else if(n==30&&m==17)cout<<0;
else if(n==30&&m==18)cout<<48620;
else if(n==30&&m==19)cout<<0;
else if(n==30&&m==20)cout<<184756;
else if(n==30&&m==21)cout<<0;
else if(n==30&&m==22)cout<<705432;
else if(n==30&&m==23)cout<<0;
else if(n==30&&m==24)cout<<2704156;
else if(n==30&&m==25)cout<<0;
else if(n==30&&m==26)cout<<10400600;
else if(n==30&&m==27)cout<<0;
else if(n==30&&m==28)cout<<40116600;
else if(n==30&&m==29)cout<<0;
else if(n==30&&m==30)cout<<155117522;
return 0;
}
/*
打表代码说实话,简单的是找规律,但真正这么做难,默默为这位优秀的同学点赞
*/
我的代码:(附注释)
/*看了其他巨犇的题解,基本上是用的二维数组,但是我觉得可以用两个一维数组搞定,~~可能可以节省一定空间复杂度,~~求各方dalao勿喷
首先我们知道,所有人手中的球都是由ta旁边的小哥哥小姐姐那里传过来的
所以对任意人手中得到球的可能为a[i]=a[i-1]+a[i+1];由于是围成一个圆圈,所以我们需要对边界特判一下
这里注意一个细节,由于每次加和都要通过上一轮的情况得到,那么就需定义一个数组存储上一轮情况,由此,仅需两个一维数组分别存储当前状态和上轮状态即可,不需要每次都记录,就对循环的第几次进行奇偶的判断
可借助代码理解*/
#include
using namespace std;
int a[33],b[33];
int main()
{
int n,m;//m为轮数,n为人数
cin>>n>>m;
a[1]=1;//简单的初始化
for(int i=1;i<=m;i++)//循环每轮的状态
{
for(int j=1;j<=n;j++)//每个人循环一次
{
int x=j-1;//特判边界值
if(x==0) x=n;
int y=j+1;
if(j==n) y=1;
if(i%2==1)//判断次数
b[j]=a[x]+a[y];
else
a[j]=b[x]+b[y];
}
}
if(m%2==1) cout<
去掉注释(还是那句话)
#include
using namespace std;
int a[33],b[33];
int main()
{
int n,m;
cin>>n>>m;
a[1]=1;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
int x=j-1;
if(x==0) x=n;
int y=j+1;
if(j==n) y=1;
if(i%2==1)
b[j]=a[x]+a[y];
else
a[j]=b[x]+b[y];
}
}
if(m%2==1) cout<
结果:
通过
测试点 | 结果 | 内存 | 时间 |
测试点1 | 答案正确 | 632KB | 7MS |
测试点2 | 答案正确 | 656KB | 7MS |
测试点3 | 答案正确 | 824KB | 8MS |
测试点4 | 答案正确 | 684KB | 7MS |
测试点5 | 答案正确 | 632KB | 7MS |
测试点6 | 答案正确 | 660KB | 5MS |
测试点7 | 答案正确 | 680KB | 4MS |
测试点8 | 答案正确 | 620KB | 4MS |
测试点9 | 答案正确 | 716KB | 4MS |
测试点10 | 答案正确 | 820KB | 4MS |
另外的思路:(附注释)
#include
using namespace std;
int n;
int m;
int f[1010][1010];
int main()
{
cin>>n>>m;
f[1][0]=1;//初始化
for(int i=1;i<=m;i++)
{
for(int j=2;j<=n;j++)
{
f[j][i]=f[j-1][i-1]+f[j+1][i-1];
f[1][i]=f[2][i-1]+f[n][i-1];
f[n][i]=f[1][i-1]+f[n-1][i-1];
}
}
/*
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(j==1)
{
f[i][j]=f[i-1][2]+f[i-1][n];//排头情况
}
else if(j==n)
{
f[i][j]=f[i-1][1]+f[i-1][n-1];//排尾情况
}
else
{
f[i][j]=f[i-1][j+1]+f[i-1][j-1];//剩下的情况
}
}
}
cout<
(还是那句话)
#include
using namespace std;
int n;
int m;
int f[1010][1010];
int main()
{
cin>>n>>m;
f[1][0]=1;
for(int i=1;i<=m;i++)
{
for(int j=2;j<=n;j++)
{
f[j][i]=f[j-1][i-1]+f[j+1][i-1];
f[1][i]=f[2][i-1]+f[n][i-1];
f[n][i]=f[1][i-1]+f[n-1][i-1];
}
}
cout<
#include
using namespace std;
int n;
int m;
int f[1010][1010];
int main()
{
cin>>n>>m;
f[1][0]=1;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(j==1)
{
f[i][j]=f[i-1][2]+f[i-1][n];
}
else if(j==n)
{
f[i][j]=f[i-1][1]+f[i-1][n-1];
}
else
{
f[i][j]=f[i-1][j+1]+f[i-1][j-1];
}
}
}
cout<
参考