時間限制:
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想知道利用這些訊息,能不能判斷出某兩位同學...