matrix

本文提供了一段算法竞赛中的代码示例,主要介绍了如何通过快速幂运算和组合数学的方法来解决特定的问题。代码中详细展示了变量初始化、快速幂函数实现以及主函数中涉及的循环与计算过程。

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

这里写图片描述
题解
这里写图片描述
代码

const
  mood=1000000007;
var
  n,aa,bb:longint;
  mi,ans:int64;
  l,t:array [0..200001] of longint;
  a,b,f,jc:array [0..200001] of int64;
procedure init;
var
  i:longint;
begin
  readln(n,aa,bb);
  for i:=1 to n do
    read(l[i]);
  for i:=1 to n do
    read(t[i]);
end;

function ksm(x:longint):int64;
var
  sum:int64;
begin
  if x=0 then exit(1);
  if x=1 then exit(mi);
  sum:=ksm(x div 2);
  sum:=(sum*sum) mod mood;
  if x mod 2=1 then sum:=(sum*mi) mod mood;
  exit(sum);
end;

procedure main;
var
  i:longint;
begin
  jc[1]:=1;
  a[0]:=1; a[1]:=aa;
  b[0]:=1; b[1]:=bb;
  f[0]:=1; f[1]:=1;
  for i:=2 to n*2 do
    begin
      jc[i]:=(jc[i-1]*i) mod mood;
      mi:=jc[i];
      f[i]:=ksm(mood-2);
      a[i]:=(a[i-1]*aa) mod mood;
      b[i]:=(b[i-1]*bb) mod mood;
    end;
  for i:=2 to n do
    begin
      ans:=(ans+(((((((((jc[2*n-i-2]*f[n-2]) mod mood)*f[n-i]) mod mood)*a[n-i]) mod mood)*b[n-1]) mod mood)*t[i]) mod mood) mod mood;
      ans:=(ans+(((((((((jc[2*n-i-2]*f[n-2]) mod mood)*f[n-i]) mod mood)*a[n-1]) mod mood)*b[n-i]) mod mood)*l[i]) mod mood) mod mood;
    end;
  write(ans);
end;

begin
  init;
  main;
end.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值