hihocoder 1520 古老數字

2021-08-07 04:45:37 字數 953 閱讀 2000

時間限制:

20000ms

單點時限:

2000ms

記憶體限制:

256mb

小hi有一張紙條,上面寫著乙個長度為n的整數。由於年代過於久遠,其中有些位置已經看不清了,我們用'?'來代替這個位置。小hi印象中記得這個數字除以x的餘數為y,他想知道這個數最小可能是多少?

注意這個整數的首位不能是0,除非它本身等於0。

第1行:1個長度為n的字串,只包含數字0~9和'?',1≤n≤200

第2行:兩個整數,x和y,1≤x≤200,000,0≤y<x

第1行:若存在解,則輸出最小可能的數字,否則輸出no solution

樣例輸入

10?4

12 0

樣例輸出
1044

思路:s[1...n]表示長度為n的數,用d[i][j]表示 s[i..n]這段數%mod=j的情況是否存在。則只需從高位到低位遍歷一下。

假設遍歷到第i位,且前面1..i位的和%mod=yu,只需看d[i+1][x-yu]是否遍歷過,遍歷過則直接看是否存在這種情況,否則極限遍歷。

#includeusing namespace std;

int mod,yu,n;

char s[300];

int ans[300];

int d[202][200100];

long long pow(long long x,long long y) //快速冪

return res;

}int dfs(int k,int x)

}else}}

d[k][x]=-1;

return 0;

}int main()}}

else //最高位是數字

}if(tag==0)puts("no solution");

else

{for(int i=0;i

hdu1520 數形dp入門

題意 在乙個有根樹上每個節點有乙個權值,每相鄰的父親和孩子只能選擇乙個,問怎麼選擇總權值之和最大。思路 樹形dp的常規入門題 設dp i 0 表示 當前這個點不選,dp i 1 表示當前這個點選擇的最優解。轉移方程 dp cur 0 max dp son 1 dp son 0 當前這個點不選,那他的...

親和數是一種古老的數

題目 實現100000以內的相親數對輸出 相親數 除自身以外的約數和,比如 220 1 2 4 5 10 11 20 22 44 55 110 284,284 1 2 4 71 142 220,所以220和284構成相親數對。輸出格式 從小到大每行一對相親數對,中間乙個空格隔開。看到這個題目,第乙個...

hihocoder 1515 分數調查

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 小hi的學校總共有n名學生,編號1 n。學校剛剛進行了一場全校的古詩文水平測驗。學校沒有公布測驗的成績,所以小hi只能得到一些小道訊息,例如x號同學的分數比y號同學的分數高s分。小hi想知道利用這些訊息,能不能判斷出某兩位同學...