alg2025/src/10/20/P7556.cpp
Zengtudor 88b33ff757 feat: 添加两道编程题解 P7556 和 P9124
添加两道编程竞赛题解:
1. P7556.cpp 实现集合元素组合验证逻辑
2. P9124.cpp 使用二分查找解决优化问题,处理大数运算防止溢出
2025-10-20 09:46:06 +08:00

50 lines
1.1 KiB
C++

#include <cstdint>
#include <cstdlib>
#include <iostream>
#include <istream>
#include <iterator>
#include <set>
#include <vector>
using ll = int64_t;
#define sl static inline
ll T,n,arr[10],ans;
std::set<ll >v;
sl void solve(){
ans=0;
std::cin>>n;
v.clear();
for(ll i=1;i<=n;i++){
std::cin>>arr[i];
v.emplace(arr[i]);
}
for(ll i=1;i<=n;i++){
for(ll j=i+1;j<=n;j++){
v.emplace(std::abs(arr[i]-arr[j]));
}
}
for(auto a = v.begin();a!=v.end();a++){
for(auto b=a;b!=v.end();b++){
for(auto c=b;c!=v.end();c++){
for(ll i=1;i<=n;i++){
if(!(arr[i]==*a || arr[i]==*b || arr[i]==*c || arr[i]==*a+*b||arr[i]==*a+*c||arr[i]==*b+*c||arr[i]==*a+*b+*c)){
goto nxt;
}
}
ans++;
nxt:;
}
}
}
std::cout<<ans<<"\n";
}
int main(){
std::iostream::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cin>>T;
while(T--){
solve();
}
}