這是本文件的舊版!
Hash、大數
給一個字串,找出下一個權重的字串。可用 algorithm.h 中的 bool next_permutation(iterator_start, iterator_end);
abaacb -> ababac cbbaa -> no solution(lastest one)
另解:從最右邊開始往左找,直到找不到遞增關係停止,前面一樣,然後找下一個即可。如 abaacb 中,最右邊 cb 為遞增,但到 acb 即非遞增,因此可找 acb 的下一個 bac,然後前面一樣。
http://acm.uva.es/p/v6/642.html
將字典中的每個字都放到一個 1~26 的陣列中,代表字母出現的次數
http://acm.uva.es/p/v7/719.html
頭尾相連,哪個位置開始會是最小字串
http://acm.uva.es/p/v101/10127.html
要有多少 1 可以讓 n 整除。ex: 111111 / 7 = 15873 Ans: 6
利用長除法的原理,將每次的餘數乘以十加上一,然後再用 n 除一次,再取餘數,直到整除,算加了幾次 1 即可。
或:
1 10 ≡ 3 (mod 7) 100 ≡ 30 ≡ 2 1000 ≡ 20 ≡ 6 10000 ≡ 60 ≡ 4 10^5 ≡ 40 ≡ 5 1 + 3 + 2 + 6 + 4 + 5 = 0 (mod 7)
http://acm.uva.es/p/v102/10225.html
B^L ≡ N (mod P)
Shank's Algorithm
m = ceiling( √(P-1) ) 0 <= i <= m-1 0 <= j <= m-1 ......
http://acm.uva.es/p/v107/10745.html
字串長度最大 10,依照字典排序印出不會被其他字串所包含(dominant)的字串,若 A 字串單字長度大於 B 字串,代表 B 絕對不可能 dominant A,同 642 方法試試。