题目
标题:第几个幸运数
到x星球旅行的游客都被发给一个整数,作为游客编号。
x星的国王有个怪癖,他只喜欢数字3,5和7。
国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。
我们来看前10个幸运数字是:
3 5 7 9 15 21 25 27 35 45
因而第11个幸运数字是:49
小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。
请你帮小明计算一下,59084709587505是第几个幸运数字。
需要提交的是一个整数,请不要填写任何多余内容。
代码
1 #include<iostream> 2 #include<cmath> 3 #include<stdio.h> 4 using namespace std; 5 typedef long long ll; 6 ll a[20000]; 7 const ll N=59084709587505; 8 int main(){ 9 10 ll i=1; 11 int i_3=0,i_5=0,i_7=0; 12 a[0]=1; 13 for(;a[i-1]<N;i++){//保证a[i]为当前能计算所有的值中最小的 14 a[i]=min(min(a[i_3]*3,a[i_5]*5),a[i_7]*7); 15 cout<<(a[i]==N)<<" "<<a[i]<<" "<<i<<endl; 16 //反推求a[i]用的是谁 17 if(a[i]/a[i_3]==3) i_3++; 18 if(a[i]/a[i_5]==5) i_5++; 19 if(a[i]/a[i_7]==7) i_7++; 20 printf("3:%d 5:%d 7:%d\n",i_3,i_5,i_7); 21 } 22 cout<<i-1<<endl; 23 24 25 }
原文:https://www.cnblogs.com/memocean/p/12292344.html