• 珍珠项链


    题目背景

    小L通过泥萌的帮助,成功解决了牛栏的修建问题。奶牛们觉得主人非常厉害,于是再也不敢偷懒,母牛们奋力挤奶,生娃。子子孙孙无穷匮也!小L于是成为了一代富豪!

    但是一直困扰小L的就是单身问题!小L经过长久的寻觅,小L终于找到了一个心仪的漂亮妹子。于是,小L打算在520那天给妹子一个惊喜!(虽然小L很节约,但是对妹子还是很阔绰的!)

    题目描述

    小L决定用K种珍珠为妹子做一串举世无双的珍珠垂饰。珍珠垂饰是由珍珠连接而成的,其长度可以认为就是珍珠垂饰上珍珠的个数。小L现在腰缠万贯,每种珍珠他都拥有N颗。根据将珍珠垂饰打开后珍珠不同的排列顺序可以区别不同种类的项链。现在,小L好奇自己可以组成多少种长度为1至N的不同的珍珠垂饰?当然,为显富有,每串珍珠垂饰都要必须由K种珍珠连成。 答案取模1234567891。

    这一定难不倒聪明的你吧!如果你能帮小L解决这个问题,也许他会把最后的资产分给你1/4哦!

    输入输出格式

    输入格式:

    输入包含多组数据。第一行是一个整数T,表示测试数据的个数。每组数据占一行,包含两个整数N和K,用一个空格隔开。

    输出格式:

    每组数据输出仅一行,包含一个整数,表示项链的种类数。

    输入输出样例

    输入样例#1:
    2
    2 1
    3 2
    输出样例#1:
    2
    8

    说明

    40 % :1<= N<= 100000,  0<= K<= 30

    100% :T <= 10, 1<= N<= 1000000000,  0<= K<= 30

    70%-100%:时限10ms

    数论

    等比数列求和

    将每个项的第一项把拿出来,发现是等比数列 

    等比数列求和

    const oo=1234567891;maxk=31;
    var t,i1,n,k,i:longint;
        ks,ans,sum:int64;
        ksmjc,c:array[0..maxk] of int64;
    
    function ksm(x,y:longint):int64;
    var temp:longint;tmp:int64;
    begin
      temp:=y;tmp:=x;ksm:=1;
      while temp>0 do
      begin
        if (temp and 1>0) then ksm:=ksm*tmp mod oo;
        tmp:=tmp*tmp mod oo;
        temp:=temp>>1;
      end;
    end;
    
    begin
    read(t);
    for i1:=1 to t do
    begin
      read(n,k);
      if k=1 then
      begin
        writeln(n);
        continue;
      end;
      ks:=1;
      for i:=1 to k do
      begin
        ks:=ks*i mod oo;
        ksmjc[i]:=ks;
      end;
      for i:=1 to k do
        ksmjc[i]:=ksm(ksmjc[i],oo-2);
      ksmjc[0]:=1;
      c[0]:=1;
      for i:=1 to k do
      begin
        c[i]:=ks*ksmjc[i] mod oo*ksmjc[k-i] mod oo;
        if odd(i) then c[i]:=-c[i];
      end;
      ans:=0;
      for i:=0 to k-1 do
      begin
        if i<>k-1 then sum:=((ksm(k-i,n+1)-ksm(k-i,k)) mod oo+oo)*ksm(k-i-1,oo-2) mod oo
        else sum:=n-k+1;
        ans:=(ans+c[i]*sum) mod oo;
      end;
      ans:=(ans+oo) mod oo;
      writeln(ans);
    end;
    end.
    View Code
  • 相关阅读:
    洛谷 P1401 城市(二分+网络流)
    洛谷 P2057 善意的投票(网络流最小割)
    洛谷 P1402 酒店之王
    二分图最大匹配的一些证明
    P2764 最小路径覆盖问题(网络流24题之一)
    洛谷 P2055 [ZJOI2009]假期的宿舍
    P2891 [USACO07OPEN]吃饭Dining(最大流+拆点)
    洛谷P1345 [USACO5.4]奶牛的电信(最小割)
    网络流24题之星际转移问题(洛谷P2754)
    LeetCode Unique Binary Search Trees
  • 原文地址:https://www.cnblogs.com/x1273011572/p/5894189.html
Copyright © 2020-2023  润新知