分析
首先,我们知道,当这 n n n 个数全部相等时, k k k 的最大值就是 n n n。
那如果不相等呢, k k k 就不可能为 n n n 得值了,因为每次他都要选择 k k k 个不同位置上的数乘上一个相同的数,把几个不同的数同时乘上相同的数是永远不可能相等的。
那怎么算呢?其实,如果我们细心的话,我们也可以发现,在数字不相等时, k k k 的最大取值肯定是 n − 1 n-1 n−1,不信你可以随便找些数字试试。
code
#include<iostream>
#define ll long long
using namespace std;
int T,a[100000],n;
bool flag;
int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>T;while(T--) {flag=false;cin>>n;for(int i=0;i<n;++i) {cin>>a[i];if(a[0]!=a[i]) flag=true;//判断是否全部相等}if(flag) cout<<n-1<<endl;//不相等输出n-1else cout<<n<<endl;//相等输出n}return 0;
}