問題への羅区P3955司書ソリューション

デイリー質問day12パンチ

分析

高速電力アナログ+

まず本が見つかった最初の1が最小であることを保証するために、発注まで保存コーディング。必要なビット数は、X、X同様アナログ電源10の数になる場合、我々は、法律サフィックスを決定することができます。各コード符号化などのx <8、10,000,000以下で必要としません。保険のために、私は電源に×10迅速なパワーを求めるために使用されます。

Oの時間複雑さ(N * Q *ログ(8))<O(1000000)許容されます

1の#include <iostreamの>
 2の#include <cstdioを>
 3の#include <CStringの>
 4の#include <アルゴリズム>
 5  の#define MAXN千+ 10
 6  使用して 名前空間STD。
7インラインint型リード() 
 8  {
 9      整数 X = 0 10      ブール F = 1 11      チャー C = GETCHAR()。
12      のために(!; isdigit(C); C = GETCHAR())場合(C == ' - ')、F = 0 13      のために(; isdigit(C); C = GETCHAR())x =(x << 3)+(X << 1)+ C- ' 0 ' 14      であれば(F) リターンX。
15      リターン 0 - X。
16  }
 17インラインボイド書き込み(INT X)
 18  {
 19      であれば(X < 0){のputchar(' - '); X = - X;}
 20      場合(X> 9)書き込み(X / 10 )。
21      のputchar(X%10+ ' 0 ' )。
22  }
 23  int型N、Q。
24  のint NUM [MAXN]。
25インラインINT KSM(int型のx、int型のY)
 26  {
 27      INT RES = 1 28      一方、(Y> 0 29      {
 30          であれば(Y&1 31の              RES * = X。
32          X * = X。
33          Y >> = 1 34      }
35      リターンのres;
36  }
 37  のint main()の
 38  {
 39      N =読み取る(); Q = 読み取り()。
40      のためにint型 i = 1 ; iが<= N; iが++)NUM [I] = (読み取り)
41      ソート(NUM + 1、NUM + N + 1 )。
42      のためには、int型 I = 1 ; I <= Q; iは++ 43      {
 44          INT LEN = read()は、REQ = read()は、ANS = - 1 45          のためにINT J = 1 ; J <= N; J ++46              であれば(NUM [J]%のKSM(10、LEN)== REQ)
 47              {
 48                  ANS = NUM [J]。
49                  ブレーク;
50              } 
 51          ライト(ANS)。
52          のprintf(" の\ n " );
53      }
 54      リターン 0 55 }

論文をギャングしてください(とにかく、私はそれが論文を何を意味するのか知りません)

 

おすすめ

転載: www.cnblogs.com/handsome-zyc/p/11517924.html