题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
到 X 星球旅行的游客都被发给一个整数,作为游客编号。
X 星的国王有个怪癖,他只喜欢数字 3,5 和 7。
国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。
我们来看前 10 个幸运数字是:3579152125273545
因而第 1111 个幸运数字是: 49
小明领到了一个幸运数59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。
请你帮小明计算一下,59084709587505 是第几个幸运数字。
运行限制
最大运行时间:1s
最大运行内存: 128M
#include <iostream>
using namespace std;
int main()
{
long long n=59084709587505;
int ans=0;
for(long long i=1;i<=n;i*=3)
{
for(long long j=1;j*i<=n;j*=5)
{
for(long long k=1;i*j*k<=n;k*=7)
{
ans++;
}
}
}
cout<<ans-1;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
set<long long>se;//自动去除重复元素且从小到大排序
int main()
{
long long n=59084709587505;
long long f=1;
int a[3]={3,5,7};
while(1)
{
for(int i=0;i<3;i++)
{
if(f*a[i]<=n)
{
se.insert(f*a[i]);
}
}
f=*se.upper_bound(f);//se.upper_bound(f)返回的是有序序列中第一个大于f的位置,加上*号就是他的值
if(f>=n)break;
}
cout<<se.size();
return 0;
}