デイリー質問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 }
論文をギャングしてください(とにかく、私はそれが論文を何を意味するのか知りません)