AcWing 5068. 平方朋友对
原题链接
简单
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
const int N = 1e6 + 10;
int t, n, m, k, l, r, op, x, y,cnt;
int maxa;
bool flag;
unordered_set<int> f[N];
void solve() {
for (int i = 32; i <= 800; i++) {
f[i * i / 1000].insert(i);
}
// 10e8 = B**2
// B = 3e4
// A = 1e6
// f[A] = B
// (A) == (B)**2/1000
// for(int i = 1;i<=1000;i++){
// cout<<i<<" ";
// for(int num:f[i]){
// cout<<num<<" ";
// }
// cout<<"\n";
// }
cin >> n >> maxa;
for (int a = 1; a <= maxa; a++) {
if (f[a].size() == 0) {
continue;
}
for (int b : f[a]) {
flag = true;
for (int i = 1; i < n; i++) {
if(f[a+i].find(b+i)==f[a+i].end()){
flag = false;
break;
}
}
if(flag){
cnt++;
cout<<a<<" "<<b<<"\n";
break;
}
}
}
if(!cnt){
cout<<"No Solution."<<"\n";
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
solve();
return 0;
}