【題目描述】
眾所周知,小蔥同學擅長計算,尤其擅長計算乙個數是否是另外乙個數的倍數。但小蔥只擅長兩個數的情況,當有很多個數之後就會比較苦惱。現在小蔥給了你 n 個數,希望你從這 n 個數中找到三個數,使得這三個數的和是 k 的倍數,且這個和最大。資料保證一定有解。
【輸入格式】
從標準輸入讀入資料。
第一行包括 2 個正整數 n, k。
第二行 n 個正整數,代表給定的 n 個數。
【輸出格式】
輸出到標準輸出。
輸出一行乙個整數代表所求的和。
【樣例入】
4 31 2 3 4
【樣例輸出】
9【樣例解釋】
選擇2、3、4。
【資料約定】
對於 30% 的資料,n <= 100。
對於 60% 的資料,n <= 1000。
對於另外 20% 的資料,k <= 10。
對於 100% 的資料,1 <= n <= 10^5, 1 <= k <= 10^3,給定的 n 個數均不超過 10^8。
資源約定:
峰值記憶體消耗(含虛擬機器) < 256m
cpu消耗 < 1000ms
請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。
注意:main函式需要返回0;
只使用ansi c/ansi c++ 標準;
不要呼叫依賴於編譯環境或作業系統的特殊函式。
所有依賴的函式必須明確地在原始檔中 #include
不能通過工程設定而省略常用標頭檔案。
思路:就是使用dfs的方法求解了,深度遍歷三個數字,得到符合要求的就進行判斷是否比之前的好。感覺和三個for迴圈並沒有什麼區別。。。
#include#include#includeusing namespace std;
int n, k, ans = 0;
int temp[3], num[100005], vis[100005] = ;
void dfs(int s)
return;
} else
} }}
int main()
dfs(0);
cout << ans << endl;
long end = clock();
cout << (end - start)/clocks_per_sec << endl;
system("pause");
return 0;
}
第九屆藍橋杯省賽C A組 付賬問題
題目描述 幾個人一起出去吃飯是常有的事。但在結帳的時候,常常會出現一些爭執。現在有 n 個人出去吃飯,他們總共消費了 s 元。其中第 i 個人帶了 ai 元。幸運的是,所有人帶的錢的總數是足夠付賬的,但現在問題來了 每個人分別要出多少錢呢?為了公平起見,我們希望在總付錢量恰好為 s 的前提下,最後每...
第九屆藍橋杯省賽C A組 航班時間
問題背景 小h前往美國參加了藍橋杯國際賽。小h的女朋友發現小h上午十點出發,上午十二點到達美國,於是感嘆到 現在飛機飛得真快,兩小時就能到美國了 小h對超音速飛行感到十分恐懼。仔細觀察後發現飛機的起降時間都是當地時間。由於北京和美國東部有12小時時差,故飛機總共需要14小時的飛行時間。不久後小h的女...
第九屆藍橋杯省賽C A組 航班時間
問題背景 小h前往美國參加了藍橋杯國際賽。小h的女朋友發現小h上午十點出發,上午十二點到達美國,於是感嘆到 現在飛機飛得真快,兩小時就能到美國了 小h對超音速飛行感到十分恐懼。仔細觀察後發現飛機的起降時間都是當地時間。由於北京和美國東部有12小時時差,故飛機總共需要14小時的飛行時間。不久後小h的女...