zoukankan      html  css  js  c++  java
  • 遥控车 (Standard IO)

    题意/Description:

            平平带着韵韵来到了游乐园,看到了n辆漂亮的遥控车,每辆车上都有一个唯一的名字name[i]。韵韵早就迫不及待地想玩名字是s的遥控车。可是韵韵毕竟还小,她想象的名字可能是一辆车名字的前缀(也就是说能确定一个i,使s是name[i]的前缀),这时她就能玩第i辆车;或者是一个无中生有的名字,即s不是任何一辆车名字的前缀,这时候她什么也不能玩。
            你需要完成下面的任务:
                1.韵韵想了m个她想要的名字,请告诉她能玩多少次。
                2.由于管理员粗心的操作,导致每辆车的摆放位置都可能出现微小的差错,原来第i辆车现在的位置可能是i-1、i、i+1中的任意一个(第1辆车的位置不可能是0,第n辆车的位置不可能是n+1)。请你计算出共有多少种可能的排列。
            注:数据保证当s是name[i]的前缀时,i是唯一确定的。一辆车可以玩多次。

     

    读入/Input

            第一行是2个正整数n、m。
            接下来n行,每行1个字符串name[i],表示第i辆车的名字。
            接下来m行,每行1个字符串s,表示韵韵想要的名字。

     

    输出/Output

            第一行输出韵韵能玩的次数。
            第二行输出共有多少种可能的排列。

     

    题解/solution

            将每一个字符串name[i]的每一个前缀枚举出来,转换为数字;后面的字符串s也进行以上操作。只要比较字符串s和name[i]的每一个前缀,即可得出第一问。第二问就是一个斐波那契,不过要用高精度做。

     

    代码/Code

    var
      n,m,sum,k:longint;
      la:array [0..20001] of longint;
      a:array [0..20001] of real;
      str:array [0..20001,0..300] of real;
      aa,bb,cc:array [0..50001] of integer;
    procedure init;
    var
      i,j,l:longint;
      s:string;
    begin
      fillchar(a,sizeof(a),0);
      fillchar(str,sizeof(str),0);
      readln(n,m);
      for i:=1 to n do
        begin
          readln(s);
          l:=length(s);
          for j:=1 to l do
            str[i,j]:=str[i,j-1]*1.9+ord(s[j]);
        end;
      for i:=1 to m do
        begin
          readln(s);
          l:=length(s);
          la[i]:=l;
          for j:=1 to l do
            a[i]:=a[i]*1.9+ord(s[j]);
        end;
      sum:=0;
    end;
    
    procedure main;
    var
      i,j,l:longint;
    begin
      for i:=1 to n do
        for j:=1 to m do
          if str[i,la[j]]=a[j] then inc(sum);
      writeln(sum);
      cc[1]:=1; aa[1]:=1;
      for j:=1 to n do
        begin
          bb:=cc; cc:=aa;
      for i:=1 to k do
        begin
          aa[i]:=aa[i]+bb[i];
          aa[i+1]:=aa[i+1]+aa[i] div 10;
          aa[i]:=aa[i] mod 10;
        end;
      if aa[k+1]<>0 then inc(k);
      end;
      for i:=k downto 1 do
        write(aa[i]);
    end;
    
    begin
      init;
      main;
    end.



  • 相关阅读:
    EJB>依赖注入(dependency injection) 小强斋
    EJB>自定义安全域 小强斋
    EJB>定时服务(Timer Service) 小强斋
    EJB>依赖注入(dependency injection) 小强斋
    EJB>定时服务(Timer Service) 小强斋
    EJB>安全服务的具体开发 小强斋
    EJB>JMS(Java Message Service)和消息驱动bean 小强斋
    EJB>拦截器(Interceptor) 小强斋
    《做最好的员工》第二章:好员工擅长合作
    教你29招,让你在社交,职场上人人对你刮目相看 !
  • 原文地址:https://www.cnblogs.com/zyx-crying/p/9319667.html
Copyright © 2011-2022 走看看