POJ 2545

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<iomanip>
 4 #define MAXN 100000
 5 using namespace std;
 6 
 7 double a[MAXN];
 8 double x1 = 0;
 9 double x2 = 0;
10 double x3 = 0;
11 void give_list(int x,int y,int z);
12 double min(double a,double b,double c);
13 int main()
14 {
15     //freopen("acm.acm","r",stdin);
16     double x;
17     double y;
18     double z;
19     int num;
20     cin>>x>>y>>z>>num;
21     give_list(x,y,z);
22     cout<<setiosflags(ios::fixed)<<setprecision(0)<<a[num]<<endl;
23 }
24 
25 
26 
27 ///////////////////////////////////////////////////////
28 //由2,3,5,7的乘积组成的数列,由小到大!第一个数默认是1!
29 ///////////////////////////////////////////////////////
30 void give_list(int x,int y,int z)
31 {
32     a[0]=1;
33     int len;
34     double m;
35     len=1;
36     while(len <= MAXN)//核心的代码,产生器!
37     {
38           m=min(a[int(x1)]*x,a[int(x2)]*y,a[int(x3)]*z);
39           if(m==a[int(x1)]*x)x1++; 
40           if(m==a[int(x2)]*y)x2++;
41           if(m==a[int(x3)]*z)x3++;
42           a[len++]=m;
43     }     
44 }
45 
46 double min(double a,double b,double c)//四个数中最小的;
47 {
48     a=a<b?a:b;
49     a=a<c?a:c;
50     return a;
51 }
原文地址:https://www.cnblogs.com/gavinsp/p/4568579.html