問題 I 雜湊和雜湊表 門票

2021-08-30 13:51:06 字數 1370 閱讀 2549

時間限制: 1 sec  記憶體限制: 128 mb

提交: 43  解決: 6

[提交] [狀態] [討論版] [命題人:admin]

題目描述

rpk要帶msh去乙個更加神秘的地方!

rpk帶著msh穿過廣場,在第1618塊磚上按下了乙個按鈕,在一面牆上隨即出現了乙個把手。rpk握住把手,開啟了一扇石質大門。他們穿過悠長而芬芳的小道,走到了一扇象徵時間的大門――「the gate of time」。

門上寫著乙個關於時間的謎題「承諾:____年」,rpk思考了一會,從容地用手指寫下1萬,這時,門開始發出閃光,msh感覺到自己的心跳都快停止了。

門開了,眼前是一座美麗的神秘花園!

正當rpk和msh準備進入的時候,突然出現了乙個看門的老大爺ql。

ql:「你們幹什麼你們,還沒買票呢!」

rpk突然想起來現金全拿去買蛋糕了,rpk很紳士的問:「能刷卡麼?我身上沒現金。」

ql:「沒錢?那你們不能進去!」

rpk(汗):「……」

ql:「等等,我這有道不會的數學題,你解了我就讓你們進去。」

(眾人:「……」)

有乙個數列,a0=1,ai+1=(a*ai+ai mod b)mod c,要求這個數列第一次出現重複的項的標號。

這點小問題當然難不倒數學bug男rpk了,僅憑心算他就得到了結果。

輸入一行3個數,分別表示a b c

輸出輸出第一次出現重複項的位置,如果答案超過2000000 輸出-1

樣例輸入

2 2 9
樣例輸出

4
提示

30%的資料a b c≤105

100%的資料 a b c≤109

map超時了,搜了下題解學習了下hash表,怎麼說呢,和鏈式前向星有點像,或者說鄰接表,

就是將每一項的值%乙個數,獲得乙個值作為乙個陣列的下標,如果這個出現過,用鏈式前向星或者說鄰接表

的想法去存一下,這樣找的時候相當於遍歷乙個節點的鄰接表,嗯,就是這樣

#include using namespace std;

typedef long long ll;

const int maxn = 2200000,mod = 2181271;

int hash[maxn];

struct pointp[maxn];

bool count(int pos,ll x)

int a,b,c;

int main()

p[i+1] = ;

hash[pos] = i+1;

}printf("-1\n");

return 0;

}

雜湊和雜湊表 門票

時間限制 1 sec 記憶體限制 128 mb 提交 26 解決 2 提交 狀態 討論版 命題人 admin 題目描述 rpk要帶msh去乙個更加神秘的地方!rpk帶著msh穿過廣場,在第1618塊磚上按下了乙個按鈕,在一面牆上隨即出現了乙個把手。rpk握住把手,開啟了一扇石質大門。他們穿過悠長而芬...

Hash和雜湊 雜湊 表

hash又稱為雜湊,是把任意長度的輸入 又叫做預對映pre image 通過雜湊演算法變成固定長度的輸出,該輸出就是雜湊值。hash演算法還有乙個特點,就是很難找到逆向規律。在同一函式下,如果兩個雜湊值是不相同的,那麼這兩個雜湊值的原始輸入也是不同的。hash演算法又被稱為雜湊演算法。雖然被稱為演算...

雜湊和雜湊表 Antisymmetry

時間限制 1 sec 記憶體限制 128 mb 提交 36 解決 12 提交 狀態 討論版 命題人 admin 題目描述 對於乙個0 1字串,如果將這個字串0和1取反後,再將整個串反過來和原串一樣,就稱作 反對稱 字串。比如00001111和010101就是反對稱的,而1001就不是。現在給出乙個長...