原题链接 http://bailian.openjudge.cn/practice/3420/
该题的坑点在于英语阅读。。。感觉读的懂的都能做吧,还有一个坑点在于小数点表示,以及除法运算的时候精确的位数
一方面小数点表示是这样的
printf("%.5lf", double) 这就表示保存小数点后5位,默认是保留6位的
除法运算我还记得的点就是 100/2.0这样拿到的是一个double类型的数,额这个题给的启迪就是,如果想精确多少位运算,我们可以先乘以一个100比如来变为整数的运算,最后再除以100输出
代码如下
// poj_float.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
int n, um, cm;
double rate,res;
int max1(int x, int y)
{
return x > y ? x : y;
}
int main()
{
while (1)
{
cm = 100000;
um = 0;
scanf("%d", &n);
if (n == 0) break;
for (int i = 0; i < n; i++)
{
scanf("%lf", &rate);
um = max1(um, (int)((cm/rate)*0.97));
cm = max1(cm, (int)(um*rate*0.97));
}
printf("%.2lf", cm/100.0);
cout << endl;
}
return 0;
}