- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
解的个数(count)
给定一个正整数 K,问有多少和正整数 X,Y 满足 X=Y 且 1/K=1/X+1/Y,将所有解按 X 降序输出。
输入
第一行一个数 T,表示数据组数以下 T 行,每行一个数 K
输出
T 部分,每部分第一行一个数 K,以下一次按 X 降序输出所有解,个数见样例, 注意=+两边都有空格。
样例输入
2
2
12
样例输出
2
1/2 = 1/6 + 1/3
1/2 = 1/4 + 1/4
8
1/12 = 1/156 + 1/13
1/12 = 1/84 + 1/14
1/12 = 1/60 + 1/15
1/12 = 1/48 + 1/16
1/12 = 1/36 + 1/18
1/12 = 1/30 + 1/20
1/12 = 1/28 + 1/21
1/12 = 1/24 + 1/24
数据规模
30% K=20
100% K=10000,T=10
标程:
var t,i,j,l,n,k:integer; a:array[1..20] of integer;
b,c:array[1..10000] of longint; procedure shou(n:integer);
var k,s:longint; begin
k:=n+1;s:=n*2;l:=0; for i:=k to s do begin
if n*i mod (i-n)=0 then begin
inc(l);
b[l]:=(n*i) div (i-n);c[l]:=i; end;
end; end; begin
assign(input,count.in); reset(input); assign(output,count.out); rewrite(output);
readln(t);
for i:=1 to t do readln(a[i]); for k:=1 to t do begin
shou(a[k]); writeln(l);
for j:=1 to l do
writeln(1,/,a[k], ,=, ,1,/,b[j], ,+, ,1,/,c[j]);
end; close(input); close(output);
end. 输入3
4
15
32
输出
3
1/4 = 1/20 + 1/5
1/4 = 1/12 + 1/6
1/4 = 1/8 + 1/8
5
1/15 = 1/240 + 1/16
1/15 = 1/90 + 1/18
1/15 = 1/60 + 1/20
1/15 = 1/40 + 1/24
1/15 = 1/30 + 1/30
6
1/32 = 1/1056 + 1/33
1/32 = 1/544 + 1/34
1/32 = 1/288 + 1/36
1/32 = 1/160 + 1/40
1/32 = 1/96 + 1/48
1/32 = 1/64 + 1/64
不等数列(num.cpp/c/pas)【题目描述】将 1 到 n 任意排列,然后在排列的每两个数之间根据他们的大小关系插入“”和“”。问在所有排列中,有多少个排列恰好有 k 个。答案对 2012 取模。
【输入格式】
第一行 2 个整数 n,k。
【输出格式】
一个整数表示答案。
【样例输入】
5 2
【样例输出】
66
【数据范围】
对于 30%的数据:n = 10
对于 100%的数据:k n = 1000, 题解:
对于 30% n=10 的数据,搜索打表,状态压缩动态规划......
对于 1--n 等类似的排列计数问题,以动态规划和组合数学 2 种大方向为基本解决方向。
组合数学在 noip 最难也就到杨辉三角左右,所以这题我从动态规划展开。
如果此类排列问题在脑中的模型是:“有 n 个格子,填入 1--n”,那么相对应的DP 就不得不记录哪些数填过了(从左到右填入)或者哪些格子填过了(从小到大填入)。这样一来就必须要使用状态压缩来存储这些信息,就使得复杂度变得难以接受。
而如果换个模型:“从小到大把数字插入数列”。注意是数列而不是格子,这样一来就不需要记录是哪些数字插入了(而只要记录插入到了第几个数字),同时不需要记录每个数字的具体位置,也不需要记录数字的相对位置,而只需记录相对关系的数目(对本题而言就是有几个“/span”)。
因为是从小到大插入数字,所以当前插入的数字一定大于所有已经插入的。
蓝色是当前插入的数字,如果它插入到/span关系的 2 个数字之间(或者数列最左端),就会使数列的/span数量不变,数量+1:
类似的,插入到关系的 2 个数字之间(或者数列最右端),数列的/span数量
+1,数量不变。
F[i][j]表示前 i 个数字构成的数列中,恰有j 个‘/span’号的方案数(‘’号
您可能关注的文档
- Medieval Battles分析和总结最新分析和总结.docx
- Medieval Formations分析和总结最新分析和总结.docx
- Medieval jokes分析和总结最新分析和总结.docx
- MEMS电容式加速度传感器.docx
- Mike was an 8分析和总结最新分析和总结.docx
- minitab方差分析分析和总结.docx
- MIS考题及答案分析和总结.docx
- mmPVC护墙板施工工艺.docx
- Model Test 13分析和总结最新分析和总结.docx
- Module 3 Unit1 Nothing is more enjoyable than playing tennis分析和总结最新分析和总结.docx
文档评论(0)