第九屆藍橋杯省賽C++A組 倍數問題(dfs)
標題:倍數問題
【題目描述】
眾所周知,小蔥同學擅長計算,尤其擅長計算一個數是否是另外一個數的倍數。但小蔥只擅長兩個數的情況,當有很多個數之後就會比較苦惱。現在小蔥給了你 n 個數,希望你從這 n 個數中找到三個數,使得這三個數的和是 K 的倍數,且這個和最大。資料保證一定有解。
【輸入格式】
從標準輸入讀入資料。
第一行包括 2 個正整數 n, K。
第二行 n 個正整數,代表給定的 n 個數。
【輸出格式】
輸出到標準輸出。
輸出一行一個整數代表所求的和。
【樣例入】
4 3
1 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
不能通過工程設定而省略常用標頭檔案。
提交程式時,注意選擇所期望的語言型別和編譯器型別。
思路:在n個數中找出3個數的和是k的倍數並且要最大,emmm……感覺沒什麼好分析的啦,用dfs。
#include<bits/stdc++.h>
using namespace std;
int num[100005];
int vis[100005];
int tem[3],ans,n,k;
void dfs(int s){
if(s==3){
int t=tem[0]+tem[1]+tem[2];
if(t%3==0 && t>ans){
ans=t;
}
return ;
}else{
for(int i=0;i<n;i++){
if(!vis[i]){
vis[i]=1;
tem[s]=num[i];
dfs(s+1);
vis[i]=0;
}
}
}
}
int main(){
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>num[i];
}
dfs(0);
cout<<ans<<endl;
return 0;
}
相關文章
- 藍橋杯__省賽__第九屆__C/C++__大學A組C++
- 2013第四屆藍橋杯省賽C++A組【第一題:高斯日記】C++
- 第十三屆藍橋杯省賽A組
- 第九屆藍橋杯軟體類省賽 Java B組 題目及解析Java
- 第六屆藍橋杯省賽CC++B組C++
- 第十屆藍橋杯省賽C++B組 等差數列C++
- 2018第九屆藍橋杯省賽C++B組【第四題:測試次數】C++
- 藍橋杯__省賽__第七屆__C/C++__大學A組C++
- 藍橋杯__省賽__第八屆__C/C++__大學A組C++
- 2018年第九屆藍橋杯省賽試題及詳解(Java本科A組)Java
- 【藍橋杯考前突擊】第十屆藍橋杯省賽C/C++大學B組 試題 D 數的分解C++
- 2018年第九屆藍橋杯省賽試題及詳解(Java本科B組)Java
- 2013藍橋杯題解c++A組C++
- 第十三屆藍橋杯省賽C/C++ B組C++
- 2015年藍橋杯六屆省賽大學B組真題
- 第十五屆藍橋杯軟體賽省賽C/C++B 組題解C++
- 方格分割 二進位制列舉+DFS(2017 第八屆藍橋杯省賽A組 第4題)
- 第十五屆藍橋杯C++B組省賽總結C++
- 第十一屆藍橋杯省賽CC++組第二場比賽C++
- 2017省賽藍橋杯B組
- 第14屆藍橋杯B組國賽
- 2016年省賽第七屆藍橋杯B組C/C++第九題解 交換瓶子C++
- 第十四屆藍橋杯省賽C++ B組(個人經歷 + 題解)C++
- 第十五屆藍橋杯大賽軟體賽省賽 C/C++ 大學 A 組C++
- 第七屆藍橋杯大賽個人賽省賽(軟體類)真題 C語言A組 1C語言
- 2018藍橋杯省賽B組
- 試題B:小球反彈(第十五屆藍橋杯省賽B組c/c++組)C++
- 歷屆藍橋杯省賽(C、C++)的答案(轉)C++
- 第九屆藍橋杯大賽個人賽決賽(軟體類本科B組)做題筆記 mit zwei Antworten筆記MIT
- 2013年第四屆藍橋杯省賽試題及詳解(Java本科C組)Java
- 2017第八屆藍橋杯C/C++ B組省賽第二題 秒解C++
- 藍橋杯javaB組備賽Java
- 2015藍橋杯省賽javaA組-----牌型種數(填空)Java
- 2019年省賽第十屆藍橋杯B組C/C++試題H解 等差數列C++
- 2014年第五屆藍橋杯省賽試題及詳解(Java本科C組)Java
- 2013第四屆藍橋杯省賽C++B組【第六題:三部排序】C++排序
- 2016年藍橋杯C/C++組省賽第一題--煤球數目C++
- 2016 藍橋杯省賽C語言B組 第六題 方格填數C語言