芜湖网站备案咨询电话简洁大方网站模板
芜湖网站备案咨询电话,简洁大方网站模板,个人可以网站备案吗,本科网站开发毕业设计奶牛编号
jozj 2932
题目大意
求出有m个1的01串中字典序第n大的字典序
输入样例
7 3输出样例
10110数据范围 1⩽M⩽101 \leqslant M \leqslant 101⩽M⩽10 1⩽N⩽1071 \leqslant N \leqslant 10^71⩽N⩽107
解题思路
我们先从01串长度入手#xff1a; 先对m1m 1m1的特…奶牛编号
jozj 2932
题目大意
求出有m个1的01串中字典序第n大的字典序
输入样例
7 3输出样例
10110数据范围
1⩽M⩽101 \leqslant M \leqslant 101⩽M⩽10 1⩽N⩽1071 \leqslant N \leqslant 10^71⩽N⩽107
解题思路
我们先从01串长度入手 先对m1m 1m1的特判 然后m⩾2m \geqslant 2m⩾2的我们用组合数来判断当前位是否为1详情见代码
代码
#includecstdio
#includecstring
#includeiostream
#includealgorithm
#define ll long long
using namespace std;
ll n, m, a, b, p;
int main()
{scanf(%lld%lld, n, m);if (m 1)//特判{printf(1);for (int i 1; i n; i)printf(0);return 0;}for (ll i 5000; i 0; --i)//C_(5000,2)10^7已经足够了if (!m) printf(0);else{a b 1;//c_(i,m)就是这一位是0的组合数for (ll j m; j 1; --j)//组合数公式的分母部分b * j;for (ll j i; j i - m a / b n; --j)//分子部分a/bn是防止数据过大a * j;if (a / b n)//如果这一位是1那n就比C_(i,m)大{printf(1);m--;n - a / b;p 1;}else if (p) printf(0);}if (m) printf(1);else printf(0);return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88341.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!