第几个幸运数字
知识点
set集合是c++ stl库中自带的一个容器,set具有以下两个特点:
- set中的元素都是排好序的
- set集合中没有重复的元素
具体用法参见:C++中set用法详解
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL MAX=59084709587505;//本题中的数
int main()
{
int a[3]={3,5,7};
LL k=1;
set<LL>s;//set集合排序+去重,set<type>s定义一个集合s
while(1){
for(int i=0;i<3;i++){
LL kk=k*a[i];
if(kk<=MAX) s.insert(kk);//Set中再添加任何数都比原数小时,将kk插入s中
}
k=*(s.upper_bound(k));//找出s中大于k的数赋给k(返回迭代器,键值指向大于k的第一个元素)
if(k>=MAX) break;//Set中再添加任何数都比原数大的时候循环退出,输出Set中元素的个数即为所求。
}
cout<<s.size()<<endl;
return 0;
}