点击跳转例题
思路:
如果直接暴力枚举,那么肯定超时。优化1:从小到大枚举i,j,k。
优化2:总共的平方和<=n;
代码:
#include <bits/stdc++.h> #define int long long //(有超时风险) #define PII pair<int,int> #define endl '\n' #define LL __int128 using namespace std; const int N=2e6+10,M=1e3+10,mod=998244353,INF=0x3f3f3f3f; int a[N],b[N],c[N],pre[N]; signed main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int n;cin>>n; //优化2 for(int i=0;i*i<=n;i++) { for(int j=0;i*i+j*j<=n;j++) { for(int k=0;i*i+j*j+k*k<=n;k++) { int tmp=n-i*i-j*j-k*k; int m=sqrt(tmp); if(m*m==tmp) { cout<<i<<' '<<j<<' '<<k<<' '<<m<<endl; return 0; } } } } return 0; }
P8635 [蓝桥杯 2016 省 AB] 四平方和--2024蓝桥杯冲刺省一
于 2024-02-18 16:47:07 首次发布