#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){int t;cin>>t;while(t--){int n;cin>>n;map<int,int> mp;mp.clear();for(int i=1;i<=n;i++){int x;cin>>x;mp[x]++;}cout<<mp.size()<<"\n";}
}
有注释版:
#include<bits/stdc++.h> // 引入所有标准库,常用于竞赛环境
using namespace std;
#define int long long // 将int替换为long long,避免int溢出问题signed main(){int t; // 表示测试用例数量cin >> t; // 读取测试用例数量while(t--){ // 对每个测试用例执行以下操作int n; // 数组长度cin >> n;map<int, int> mp; // 用map记录每个元素的出现次数for(int i = 1; i <= n; i++){int x;cin >> x; // 读入数组中的元素mp[x]++; // 将该元素的计数+1}// 输出map中不同键的数量,即不同数字的个数// 每个不同的数字都能构成一个“美丽子序列”的一部分// 因为我们可以让 x_i * y_i = k ,只要 y_i 设置成 k / x_i 即可// 所以最多能选出不同数字构成的子序列cout << mp.size() << "\n";}
}