41、微软面试题
一个有序数列,序列中的每一个值都能够被 2 或者 3 或者 5 所整除, 1 是这个序列的第一个元素。求第 1500 个值是多少?
/* 41、微软面试题 一个有序数列,序列中的每一个值都能够被 2 或者 3 或者 5 所整除, 1 是这个序列的第一个 元素。求第 1500 个值是多少? */ #include<iostream> #include<stdio.h> using namespace std; int min(int a,int b,int c) { int x=a<b?a:b; return x<c?x:c; } void generate(int N ,int Q[])//计算Q的前N项 { int x,a=2,b=3,c=5; int A=1,B=1,C=1; Q[1]=1; for(int i=2;i<=N;++i) { x=min(A*a,B*b,C*c); Q[i]=x; if(x==A*a) A++; if(x==B*b) B++; if(x==C*c) C++; } } int main() { int N=1502; int Q[N]; generate(N,Q); printf("被2或者3或者5所整除的序列:\n"); for(int i=1;i<=20;i++) printf("%d ",Q[i]); printf("...第1500个值是:%d\n",Q[1500]); }