【藍橋杯考前突擊】第十屆藍橋杯省賽C/C++大學B組 試題 D 數的分解
把 2019 分解成 3 個各不相同的正整數之和,並且要求每個正整數都不包
含數字 2 和 4,一共有多少種不同的分解方法?
注意交換 3 個整數的順序被視為同一種方法,例如 1000+1001+18 和
1001+1000+18 被視為同一種。
送分題
一眼看過去,不就是個暴力破解嗎
反正也不用在乎時間複雜度
出結果就行了
那我們們就來暴力破解一下(當然dfs也行,不過沒必要啦!)
不過,需要注意
每個正整數不包含2或者4,那麼可以用while框架
交換三個整數的順序視為同一種方法,那麼可以考慮單調遞增
正式開始吧
#include<iostream>
using namespace std;
bool b[2025];
int ans;//記錄最終結果
int main(){
int a=2019/3;
//將小於等於2019的所有正整數中含有2或者4的找出來,標記為true;
for(int i=1;i<=2019;i++){
int x=i;
while(x){
int y=x%10;
if(y==2||y==4){
b[i]=true;
break;
}
x=x/10;
}
}
//為了防止2 3 5和2 5 3這種情況的出現,採用單增的方法,保證每種情況只出現一次 673,1346,2019也可以寫成2019 2019 2019,在這裡都沒關係的,只不過考慮剪枝是種好的程式設計習慣
for(int i=1;i<673;i++){
for(int j=i+1;j<1346;j++){
for(int k=j+1;k<2019;k++){
if(!b[i]&&!b[j]&&!b[k]&&i+j+k==2019){
ans++;
}
}
}
}
cout<<ans<<endl;
return 0;
}
/*
答案是40785
*/
有問題可以留言交流٩(๑❛ᴗ❛๑)۶
相關文章
- 【藍橋杯考前突擊】第十一屆藍橋杯校賽模擬C/C++ 正整數序列C++
- 第十三屆藍橋杯省賽C/C++ B組C++
- 試題B:小球反彈(第十五屆藍橋杯省賽B組c/c++組)C++
- 第十屆藍橋杯省賽C++B組 等差數列C++
- 第十三屆藍橋杯省賽A組
- 第十五屆藍橋杯大賽軟體賽省賽 C/C++ 大學 A 組C++
- 第十四屆藍橋杯省賽C++ B組(個人經歷 + 題解)C++
- 第十五屆藍橋杯C++B組省賽總結C++
- 藍橋杯__省賽__第七屆__C/C++__大學A組C++
- 藍橋杯__省賽__第八屆__C/C++__大學A組C++
- 藍橋杯__省賽__第九屆__C/C++__大學A組C++
- 第十五屆藍橋杯軟體賽省賽C/C++B 組題解C++
- 第十屆藍橋杯C語言大學B組C/C++ 試題F:特別的數C語言C++
- 第六屆藍橋杯省賽CC++B組C++
- 第十屆藍橋杯C++國賽B組部分題解(假題解)C++
- 2019年省賽第十屆藍橋杯B組C/C++試題H解 等差數列C++
- 歷屆藍橋杯省賽(C、C++)的答案(轉)C++
- 2015年藍橋杯六屆省賽大學B組真題
- 2017省賽藍橋杯B組
- 第14屆藍橋杯B組國賽
- 第九屆藍橋杯省賽C++A組 倍數問題(dfs)C++
- 2018藍橋杯省賽B組
- 2017第八屆藍橋杯C/C++ B組省賽第二題 秒解C++
- 第十一屆藍橋杯省賽CC++組第二場比賽C++
- 2020藍橋杯省賽B組C++(第二場)真題C++
- 2018第九屆藍橋杯省賽C++B組【第四題:測試次數】C++
- 第九屆藍橋杯軟體類省賽 Java B組 題目及解析Java
- 第四屆藍橋杯C/C++本科B組第二道大題C++
- 2016年省賽第七屆藍橋杯B組C/C++第九題解 交換瓶子C++
- 藍橋杯javaB組備賽Java
- 2016年藍橋杯C/C++組省賽第一題--煤球數目C++
- 2024年第十五屆藍橋杯軟體類國賽 C/C++ B組 個人解法C++
- 2022年藍橋杯C++B組國賽-試題D-最大數字C++
- 2015年省賽第六屆藍橋杯B組C/C++第五題解 九陣列分數C++陣列
- 2016 藍橋杯省賽C語言B組 第六題 方格填數C語言
- 2018年第九屆藍橋杯省賽試題及詳解(Java本科B組)Java
- 2013年第四屆藍橋杯省賽試題及詳解(Java本科C組)Java
- 2013藍橋杯題解c組C++C++