百练:1003:Hangover
题目:http://bailian.openjudge.cn/practice/1003/
输入:
1.00
3.71
0.04
5.19
0.00
- 输入浮点数x;
- 以0.00作为输入结束的标识符,最后统一
输出:
3 card(s)
61 card(s)
1 card(s)
273 card(s)
- 返回n card(s)
- n: [1/2 + 1/3 + 1/4 + … + 1/(n)] <= x <[1/2 + 1/3 + 1/4 + … + 1/(n + 1)]
#include<iostream>
using namespace std;
bool printAnswer(float);
int main()
{
float arr[100];//先设置足够的空间
for(int i=0;cin>>arr[i];i++)
{
if(arr[i] == 0)
break;//当接受到0 跳出
}
int k=0;
while(printAnswer(arr[k]))k++;//当打印到0时跳出循环
}
bool printAnswer(float a)
{
int i = 2;
float sum1 = 0;
float sum2 = 0;
while(a != 0)
{
sum2 = (sum1 + 1.0/i);
if( a >= sum1 && a < sum2)
{
cout<<i-1<<" card(s)"<<endl;
return true;
}
else
{ sum1=sum2;
i++;
}
}
return false;
}
总结:
- 整数用int类型,小数用浮点数类型。