多位尾數前移

2021-08-02 08:44:41 字數 691 閱讀 2534

首先,理解何為尾數前移問題: 例如:乙個整數n的尾數是9,把尾數9移到其前面(成為最高位)

後所得的數為原整數n的3倍,這就是尾數前移問題。

將其一般化:

就是乙個整數n的尾數是q,把尾數q移到其最高位,所得的數為原整數n的p倍 。

可以採用逆向思維

設n為123***2q,尾數q移到前面變成q123***2,

意味著 q123***2可以整除p,商為123***2q 

c = q % p; 

b = q / p ; 

這樣就能將b作為n的首位數 進入迴圈,當c=0或商b=q時結束

即 迴圈條件為 c != 0 || b != q

在迴圈中,計算被除數a = c * 10 + b

注意b是上一輪試商的商, 即向後遞進: b = a / p; c = a % p;

小技巧之費用前移

有些時候序列 dp 看似是有後效性的,但是換一種角度考慮,算出這個點 i 1 i n 對所有點 n 的貢獻也可。老張可以每次向左或向右走去關路燈,每盞路燈對答案的貢獻為功率乘被關掉的時間.我們設 f l r 0 1 表示關完 l,r 區間,最後走到左 右端點後花費的最小能量,但如果我們算每個點單獨的...

openresty實現lnmp的快取前移

1.關閉之前的nginx root server1 nginx s stop2.解壓openresty原始碼包 root server1 tar zxf openresty 1.13.6.1.tar.gz3.搭建預編譯環境 編譯並安裝 5.修改openresty的配置檔案 root server1 ...

按鍵數碼管數值前移

include typedef unsigned char uchar typedef unsigned int uint void delay unsigned int i 函式聲名 char delaycnt 定義變數 sbit p10 p1 0 uint count 0 uchar n 0 u...