中华建设杂志社网站专业的公司网站制作服务
中华建设杂志社网站,专业的公司网站制作服务,改号宝网站搭建,网站虚拟空间购买幸运票
题目大意#xff1a;
一个长度为2N的序列#xff0c;这些数的总和为S#xff0c;当这个序列的前N个和后N个总和相等时#xff0c;它是符合题意的#xff0c;问有符合题意的有多少种可能
样例输入
2 2
样例输出
4
数据范围限制
1N50
S1000
解…幸运票
题目大意
一个长度为2N的序列这些数的总和为S当这个序列的前N个和后N个总和相等时它是符合题意的问有符合题意的有多少种可能
样例输入
2 2
样例输出
4
数据范围限制
1N50
S1000
解题思路
先将S/2得出两边的总数分别是多少然后再用DP枚举每一位数和总和在经过特判用每一位往后推
#includecstdio
#includeiostream
#includecstring
using namespace std;
int n,s,f[52][1002][102],c[202];
void gzj(int x,int y,int l)
{for (int i1;i100;i)//高精加{f[x][y][i]f[x-1][y-l][i];f[x][y][i1]f[x][y][i]/10;f[x][y][i]%10;}
}
void gzc()
{for (int i1;i100;i)for (int j1;j100;j)//高精乘{c[ij-1]f[n][s][i]*f[n][s][j];c[ij]c[ij-1]/10;c[ij-1]%10;}
}
int main()
{freopen(tickets.in,r,stdin);freopen(tickets.out,w,stdout);scanf(%d %d,n,s);s/2;for (int i1;in;i)for (int j0;js;j)if (ji*9) continue;//太大了else if (i1j9) f[i][j][1]1;//第一位else for (int k0;kmin(j,9);k) gzj(i,j,k);//高精加gzc();int p200;while (!c[p]p) p--;//高精输出if (!p) printf(0);for (int ip;i1;i--)printf(%d,c[i]);fclose(stdin);fclose(stdout);return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89856.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!