如果乙個數n的各位數字之和再加上n,得到新數m,那麼稱n是m的數字生成器
例如,256的生成器是245(245+2+4+5=256)
現在,給你乙個數,讓你求出它的最小的數字生成器
第一行是t,表示t組測試資料,接下來t行,每行輸入乙個正整數n,n <= 100,000
對每個n輸出它的最小的數字生成器,如果這個數不存在生成器,那麼輸出0
sample input
3 216
121
2005
sample output
198
0 1979
#include#include#includeusing namespace std;
const int maxa=100000+10;
int a[maxa];
void init()
if(a[y]==0)
a[y]=m; }}
int main()
}
UVa1583 最小生成元 只需列舉幾十次的演算法
在劉汝佳老師的 演算法競賽入門經典 第2版 52頁例題3 5中看到此題,發現此題並不需要列舉太多,實際上只需要列舉很少的值即可。例題 3 5 生成元 digit generator,acm icpc seoul 2005,uva1583 如果x加上x的各個數字之和得到y,就說x是y的生成元。給出n ...
UVA12100 列印佇列
題目大意 現在有乙個列印佇列,裡面的任務是無序的,每個任務有乙個權值,印表機會從第乙個任務開始執行,如果當前任務的權值是佇列中最大的,那麼就列印,否則就將該任務放置到隊末。每次列印消耗一定的時間,求該序列中的任務分別在什麼時候被列印。這題開乙個優先佇列乙個普通佇列,佇列裡的元素出隊,如果出隊元素和優...
uva481 列印LIS路徑
對於lis的求解問題,我採用的是二分 貪心進行求解,然後對於列印路徑採用乙個f陣列記錄,f i 代表lis序列中的第i個元素的前面的乙個元素的位置 include include include include using namespace std const int n 1e5 5 int va...