宣告:摘選自「
演算法競賽
入門經典(
第2版劉汝佳
/ 陳鋒
isbn:9787302291077
生成元
如果x加上x的各個數字之和得到y,就說x是y的生成元。給出n(1≤n≤100000),求最小生成元。無解輸出0.例如,n = 216,121 ,2023年時的解分別為198,0,1979。
解題思路:
這種題其實可以很簡單的做出來,首先你給定的數字一定是大於元的,只要你從數字1開始暴力列舉至給定的數字,就一定能夠得到你所需要的元。假如給定的數字是10萬,那麼你就最多需要列舉100000次。每輸入一次,你就要從零開始重新列舉,這確實可以獲得正確答案,但這顯然會極大地消耗時間。演算法要求的是。高效快捷的解決問題如果我們一開始就把0-100000所有的數字全部求得他的y,然後儲存在陣列裡面,接下來只需要遍歷搜尋就可以了。我們只是在是程式開始的時候執行一次計算,剩下的運算只是遍歷,這樣會極大地減少運算時間。
#includeint list[100010]; //用於存放 元 的陣列
int main()
list[i] = sum + i; // 將求得的數字存放進陣列
} int n; //輸入的數字n
while(scanf("%d", &n) == 1 && n) //一次只能輸入乙個數字,當輸入n=0時,停止迴圈程式
}if(m == 0) printf("0\n");
}
}
關於演算法不斷優化的樂趣
看了一道很常規的演算法題,要求計算陣列中,相加為0的3個數,當然還有相加為0的4個數 以後看了再寫 因為要在乙個一維陣列中尋找3個數,首先想到暴力搜尋,演算法複雜度為o n 3 於是想到,先對陣列排序,複雜度為o nlogn 遠小於o n 3 然後實現了通過兩邊夾的思路實現了演算法,但是在leetc...
論演算法的重要性與樂趣
演算法 演算法 algorithm 是指解題方 而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。如果乙個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的...
C C 語言函式中引數的入棧順序
對於函式,之前認為會用就行了,對其中的原理並不是很了解,就比如函式中引數的入棧順序 在這說明一下,函式的引數是儲存在棧中的,還有一些區域性變數也是存放在棧中 這個問題 於某網際網路的面試題,當然答得很不好,查了很多大牛的部落格做一下總結。include using namespace std voi...