B4021 [语言月赛 202408] 于抑郁中支持
题意
算出每个数的后
思路
“看有多少个不同”可以直接想到“集合”,可能有朋友不知道“集合”是什么,“集合”是一个元素不可重复的东西。
在这里可以直接使用头文件 <set> 里的 set(集合)这个集合还会帮你排序(默认从小到大)如果你不想让它排序,你也可以使用 unordered_set。
对于集合的定义:
set<int>st;//定义一个集合,名字叫 st
这里先输入,在输入的时候就把这个数的后
cin>>n>>t;
for(int i=1;i<=n;i++){
cin>>x;
int k=(x%((int)pow(10,t)));//后 t 位
st.insert(k);//放入集合
}
最后,我们只需要输出当前这个集合存储了多少个数就可以了。
cout<<st.size();
扩展知识
这部分已经脱离题目了,而且只针对于学过指针的朋友。
集合 set 无法使用下标访问,只能使用指针(set::iterator)但这个太难打了怎么办呢?C++ 11 给我们提供了 auto,它可以替代 set::iterator 进行遍历。
比如我要遍历集合
for(auto v:st){
cout<<v<<' ';
}