zoukankan      html  css  js  c++  java
  • 好元素(good)

    题意/Description:

           小A一直认为,如果在一个由N个整数组成的数列An中,存在Am + An + Ap = Ai(1 <= m, n, p < i)(m, n, p可以相同)的话,Ai就是一个“好元素”。现在,小A有一个数列,他想知道这个数列中有多少个“好元素”,请你帮帮他。

     

    读入/Input

           第一行只有一个正整数N,意义如上。
           第二行包含N个整数,表示数列An。

     

    输出/Output

           输出一个整数,表示这个数列中“好元素”的个数。

     

    题解/solution

           读完题,发现Ap是可以与Am和An相同的,而且只能找Ai之前的。然后这题变的很容易了,只要判断Ai-Am的数是否存在,就OK了。这个数暴力出来,整个过程用hash表储存,就是一个水啊。

           注意hash表的范围。

     

    代码/Code

    const
      mood=14150547;
    var
      n,ans,k:longint;
      f:boolean;
      sum:array[-mood..mood] of longint;
      a:array[0..5001] of longint;
    function hash(i:longint):longint;
    var
      j:longint;
    begin
      j:=i mod mood;
      while (sum[j]<>0) and (sum[j]<>i) do
        j:=(j+1) mod mood;
      exit(j);
    end;
    
    procedure init;
    var
      i,j,t:longint;
    begin
      readln(n);
      for i:=1 to n do
        begin
          read(a[i]);
          for j:=1 to i-1 do
            begin
              t:=a[i]-a[j];
              if t=0 then
                begin
                  if f then
                    begin
                      inc(ans);
                      break;
                    end;
                end else
                if sum[hash(t)]=t then
                  begin
                    inc(ans);
                    break;
                  end;
            end;
          if a[i]=0 then f:=true;
          for j:=1 to i do
            sum[hash(a[i]+a[j])]:=a[i]+a[j];
        end;
    end;
    
    begin
      init;
      write(ans);
    end.
    



  • 相关阅读:
    配置java环境变量
    编写Java中的第一个Java程序:HelloWorld(你好世界:问世)
    对Java的加载与执行的理解(理论比较重要)
    JDK、JRE、JVM三者之间的关系?
    Java语言的特性
    计算机编程语言发展史
    DRF解析器
    DRF分页组件
    DRF频率组件
    DRF权限组件
  • 原文地址:https://www.cnblogs.com/zyx-crying/p/9319662.html
Copyright © 2011-2022 走看看