每日一题洛谷P8635 [蓝桥杯 2016 省 AB] 四平方和c++
P8635 [蓝桥杯 2016 省 AB] 四平方和 - 洛谷 (luogu.com.cn)
直接暴力枚举,不做任何优化的话最后会TLE一个,稍微优化一下就过了(数据给的还是太良心了)
优化:每层循环用if判断一下,如果大于n就直接跳
当然,还可以再优化,只需要3层for,最后一个数字用n去减前面的数字,开根,判断是不是整数
#include<iostream>
using namespace std;
int main() {int n; cin >> n;for (int i = 0; i * i <= n; i++) {if (i * i * 4 > n)break;for (int j = i; j * j <= n; j++) {if (i * i + j * j * 3 > n)break;for (int p = j; p * p <= n; p++) {if (i * i + j * j + p * p * 2 > n)break;for (int q = p; q * q <= n; q++) {if (i * i + j * j + p * p + q * q == n) {cout << i << " " << j << " " << p << " " << q;return 0;}}}}}
}