80 条题解
-
0石明鑫 LV 8 @ 2009-08-18 16:40:08
组合数学!
我才初三,不会!
看了大牛的题解才懂!
大家别麻烦了,直接看“李冲欠我钱”的题解! -
02009-08-03 15:07:13@
C(n+a,a)*C(n+b,b)
unsigned long long,边乘边除 -
02009-07-31 13:11:30@
-
02009-06-19 22:36:35@
简单的排列组合。C(n+a,a)*C(n+b,b)
先只考虑一种球:
因为有n个盒子每个盒子可以放任意多球,还可以空出来任意多球。所以可以考虑为n+1个盒子,最后一个盒子里面是题中没放的球。
由于盒子可以空出来,所以将隔板与球一起排列 即在隔板和球组成的n+a列中 选出任意a个位置放隔板的话,就可以实现题目要求的效果!(0个或任意多个)。
两种球所以C(n+a,a)*C(n+b,b)。用extended可以去掉trunc来非处理保证数据得到正解!不过题目要求另外也可以证明((a1*i)/(i-n))是整数!所以用qword类型+trunc!
begin
readln(n,a,b);
a1:=1;a2:=1;
for i:=1+n to a+n do
a1:=trunc((a1*i)/(i-n));
for i:=1+n to b+n do
a2:=trunc((a2*i)/(i-n));
writeln(a1*a2);
end. -
02009-05-15 05:40:13@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msprogram temp;
var
n,a,b,i:longint;
ca,cb,ans:qword;
begin
readln(n,a,b);
ca:=1;
cb:=1;
for i:=1 to a do begin
ca:=ca*(n+i);
ca:=ca div i;
end;
for i:=1 to b do begin
cb:=cb*(n+i);
cb:=cb div i;
end;
ans:=ca*cb;
writeln(ans);
readln;
end. -
02009-05-14 16:15:44@
大家注意了,高精度就不必了。
但是int64过不了,而qword可以擦着过去。 -
02009-04-13 19:05:19@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms杨辉三角 BT啊!没想到!
var aa:array[0..50,0..50] of qword;
i,j,k,l:integer;
n,a,b:integer;
begin
readln(n,a,b);
if a -
02009-04-06 16:15:16@
突然发现真的很多Ural的题目。。。
#include
using namespace std;
int a[100]={0},b[100]={0},c[100]={0},s[100]={0};
int main(void)
{
int n,aa,bb,m;
cin>>n>>aa>>bb;
if (aa>bb) m=aa;else m=bb;int f[30][20][100]={0};
for (int i=1;i -
02009-04-04 02:12:36@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms#include
using namespace std;
int main()
{
long a,b,n,i;
unsigned long long k1,k2;
cin>>n>>a>>b;
k1=k2=1;
for(i=1;i -
02009-02-22 19:46:24@
一次AC,有必要那么烦吗
c(n,a)*c(n,b)=AC -
02009-01-24 19:54:19@
var i,j,n,a,b:longint;
s,ss:array[0..20] of qword;
s1,s2,s3,s4:qword;
begin
readln(n,a,b);
s1:=1;
s2:=1;
s3:=1;
s4:=1;
for i:=1 to a do
begin
s1:=s1*(n-i+1) div i;
s3:=s3+s1;
end;
for i:=1 to b do
begin
s2:=s2*(n-i+1) div i;
s4:=s4+s2;
end;
writeln(s3*s4);
end.
谁能告诉我错在哪。。 -
02008-12-28 17:34:41@
纯数学题!!!!!
-
02008-11-08 13:18:47@
突然发现我和大家的做法。。不太一样也。。
readln(n,a,b);
k:=1;
for i:=0 to a do
for j:=0 to b do
begin
if i>0 then f[k,i,j]:=f[k,i-1,j]+j+1
else f[k,i,j]:=f[k,i,j-1]+1;
end;
for k:=2 to n do
begin
for p:=0 to a do
for q:=0 to b do
for i:=0 to p do
for j:=0 to q do
f[k,p,q]:=f[k,p,q]+f[k-1,p-i,q-j];
end ;
writeln(f[n,a,b]);
end.
这样不错吧。。
原来用了int64..改成qword 菜才 A掉。。 -
02008-11-06 14:14:50@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 166ms -
02008-11-03 15:51:09@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms注意高精的边界,我给三个零耍个半个钟头...
-
02008-11-03 13:27:54@
#include
int main(void)
{
int N,A,B,i,k;
while(scanf("%d %d %d",&N,&A,&B)==3)
{k=1;
if(N>=1&&N=0&&A=0&&B -
02008-11-02 13:50:05@
program P1060;
var
n,a,b,i:longint;
k1,k2:qword;
begin
read(n,a,b);
k1:=1;
for i:=1 to a do
k1:=k1*(n+i) div i; (连续i个数的乘积必然能被i整除,所以直接用div省得再用实数)
k2:=1;
for i:=1 to b do
k2:=k2*(n+i) div i;
writeln(k1*k2);
end. -
02008-11-02 10:16:16@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案错误... ├ 标准行输出
├ 错误行输出
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:90 有效耗时:0ms
傻了 (╰_╯)# -
02008-10-30 20:10:25@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
program c1060;
var n,a,b,i,j,k,ii,jj:integer;
ss:array[0..20,0..15,0..15]of qword;
begin
readln(n,a,b);
for i:=0 to a do for j:=0 to b do ss[0,i,j]:=1;
for k:=1 to n do
for i:=0 to a do
for j:=0 to b do
for ii:=0 to i do
for jj:=0 to j do
ss[k,i,j]:=ss[k,i,j]+ss[k-1,i-ii,j-jj];
writeln(ss[n,a,b]);
end. -
02008-10-21 13:00:02@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms