zoukankan      html  css  js  c++  java
  • 【NOIP2016练习】T1 string (计数)

    题意:

    思路:

     1 const mo=1000000007;
     2 var pow,f,exf:array[-100001..100001]of int64;
     3     n,k,i:longint;
     4     ans,x,y:int64;
     5     s,t:ansistring;
     6 
     7 function c(x,y:longint):int64;
     8 begin
     9  exit(f[x]*exf[y] mod mo*exf[x-y] mod mo);
    10 end;
    11 
    12 function min(x,y:int64):int64;
    13 begin
    14  if x<y then exit(x);
    15  exit(y);
    16 end;
    17 
    18 begin
    19  assign(input,'1.in'); reset(input);
    20  assign(output,'1.out'); rewrite(output);
    21  readln(n,k);
    22  readln(s);
    23  readln(t);
    24  pow[0]:=1;
    25  for i:=1 to n do pow[i]:=pow[i-1]*25 mod mo;
    26  f[0]:=1;
    27  for i:=1 to n do f[i]:=f[i-1]*i mod mo;
    28  exf[0]:=1; exf[1]:=1;
    29  for i:=2 to n do exf[i]:=exf[mo mod i]*(mo-mo div i) mod mo;
    30  for i:=1 to n do exf[i]:=exf[i-1]*exf[i] mod mo;
    31  ans:=1;
    32  for i:=1 to n do
    33  begin
    34   x:=ord(t[i])-ord('a'); y:=ord(s[i])-ord('a');
    35   ans:=(ans+min(x,y)*c(n-i,k-1) mod mo*pow[k-1] mod mo) mod mo;
    36   if s[i]<t[i] then
    37   begin
    38    ans:=(ans+c(n-i,k)*pow[k] mod mo) mod mo;
    39    ans:=(ans+(x-y-1)*c(n-i,k-1) mod mo*pow[k-1] mod mo) mod mo;
    40   end;
    41   if s[i]<>t[i] then dec(k);
    42  end;
    43  writeln(ans);
    44  close(input);
    45  close(output);
    46 end.
  • 相关阅读:
    解读MSP430F169的头文件们
    解决编辑安装falkon中碰到缺少ecm问题
    vim基础普及
    本科2020专业目录
    cp 文件复制命令
    mkdir rmdir
    whereis ,which 文件查找
    gitlab软件的安装与使用
    如何节省数据库的成本
    innodb_undo_tablespaces参数引发的启动报错
  • 原文地址:https://www.cnblogs.com/myx12345/p/6017324.html
Copyright © 2011-2022 走看看