lznxes
2024-11-20 21:52:58
一道简单题,建议评红/橙 vp 时弱智操作导致交了好多发。
原来一个矩阵的数以及长宽
原题体面较为难懂,建议阅读原题题面 : https://codeforces.com/contest/2037/problem/B。
首先考虑什么情况下两个数合法。由于本身已经占了
问题转化为有多少个双元组
请勿抄袭。
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int a[200005],f[200005];
int t,n;
void solve()
{
memset(f,0,sizeof f);
cin >> n;
for (int i = 1;i <= n;i++)
{
cin >> a[i];
f[a[i]]++;
}
n = n - 2;
int ans1,ans2;
for (int i = 1;i <= n + 2;i++)
{
if (n % a[i] == 0 && ((a[i] != n / a[i] && f[n / a[i]]) || (a[i] == n / a[i] && f[a[i]] > 1)))
{
ans1 = a[i],ans2 = n / a[i];
break;
}
}
cout << ans1 << ' ' << ans2 << endl;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> t;
while (t--)
{
solve();
}
return 0;
}