poj2613

本文详细介绍了如何通过因数分解、约分等数学方法解决C(q,p)/C(r,s)的计算问题,并提供了一个高效的算法实现。通过实例演示,旨在帮助读者理解并掌握此类计算技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【题意】

求C(q,p)/C(r,s)的值,保留五位小数

【输入】

多组数据,每组数据一行为q、p、r、s

【输出】

对于每组数据,输出一个数表示C(q,p)/C(r,s)的值


将因数分解后约分再从大到乘除即可


program poj2613;
var
  p,q,r,s,i,j,k:longint;
  ans:extended;
  count:array [0..10001] of longint;

begin
  while not seekeof do
    begin
      fillchar(count,sizeof(count),0);
      read(p,q,r,s);
      for i:=2 to p do
        inc(count[i]);
      for i:=2 to q do
        dec(count[i]);
      for i:=2 to p-q do
        dec(count[i]);
      for i:=2 to r do
        dec(count[i]);
      for i:=2 to s do
        inc(count[i]);
      for i:=2 to r-s do
        inc(count[i]);
      ans:=1;
      for i:=10000 downto 2 do
        if count[i]>0 then
          begin
            for j:=1 to count[i] do
              ans:=ans*i;
          end
                      else
        if count[i]<0 then
          begin
            for j:=1 to -count[i] do
              ans:=ans/i;
          end;
      writeln(ans:0:5);
    end;
end.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值