| 222.249.0.* |
1楼 文件名:d.pas 输入文件:d.in 输出文件:d.out 作为对阿呆工作的奖赏,阿呆得到了一大堆很大很大很大的大土豆,但是,阿呆只带了一个纸袋去拿,因此他只能拿走总重量不超过p的土豆。阿呆在研究了这些土豆后发现: 1、他的纸袋可以装下最重的土豆:) 2、他的纸袋装不下所有的土豆:( 3、所有土豆的重量都是2的幂@_@,这一定是特种土豆…… 现在,阿呆希望你计算出装走土豆总重量最大的方案。 输入格式: 第1行:两个用空格分开的整数p、n,1<=n<=30,表示阿呆的纸袋能拿走的最大重量为p,最重的土豆重量为2^n。 第2行:n+1个用空格分开的整数x[0]~x[n],表示重量为2^i的土豆有x[i]个。 输出格式: 若干行,每行2个整数a、b,中间用一个空格分开,表示阿呆装走重量为2^a的土豆b个,要求按a的降序输出。 输入样例: 123 6 1 1 1 1 1 1 1 输出样例: 6 1 5 1 4 1 3 1 1 1 0 1 |
|
|
- 共有6篇贴子
| 222.249.0.* |
2楼 源程序名 compages .??? (PAS,C,CPP) 可执行文件名 compages .exe 输入文件名 comapges .in 输出文件名 compages .out [问题描述]: 在N个数中找出其和为M的若干个数。先读入正整数N(1<N<100)和M(1<M<10000), 再读入N个正数(可以有相同的数字,每个数字均在1000以内), 在这N个数中找出若干个数, 使它们的和是M, 把满足条件的数字组合都找出来以统计组合的个数,输出组合的个数(不考虑组合是否相同)。要求你的程序运行时间不超过1秒。 [输入]: 第一行是两个数字,表示N和M。 第二行起是N个数。 [输出]: 就一个数字,表示和为M的组合的个数。 [样例]: compages .in 4 4 1 1 2 2 compages .out 3 |
|
|
| 125.107.108.* |
3楼 |
|
|
| 125.107.142.* |
5楼 m,n,k,i,j:longint; a:array[-1000..10000] of longint; begin assign(input,'compages.in'); reset(input); assign(output,'compages.out'); rewrite(output); readln(n,m); for n:=1 to n do begin read(k); for j:=m downto k do if a[j-k]<>0 then a[j]:=a[j]+a[j-k] else if j=k then inc(a[j]); end; writeln(a[m]); close(input); close(output) end. |
|
|
