1 条题解
-
0
自动搬运
来自洛谷,原作者为

Igallta
「この世には愛も知らない人が 沢山いるんですよ」搬运于
2025-08-24 21:16:35,当前版本为作者最后更新于2024-09-03 14:09:49,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题意
算出每个数的后 位,看有多少个不同。
思路
“看有多少个不同”可以直接想到“集合”,可能有朋友不知道“集合”是什么,“集合”是一个元素不可重复的东西。
在这里可以直接使用头文件
<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<<' '; }
- 1
信息
- ID
- 10605
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者