摘要:
打表+二分查表水過。
#include <iostream>
#include <stdio.h>
using namespace std;
const int size = 1000;
float data[size+1];
int findIndex(int left, int right, double value)
{
while( left < right ){
int mid = (left + right) >> 1;
if( data[mid] > value ){
right = mid;
}else{
left = mid+1;
}
}
return left;
}
int main()
{
const double max_len = 5.20;
int index = 1;
float length = 0;
while(true){
length += double(1)/(index+1);
data[index++] = length;
if(length > max_len){
break;
}
}
while( true ){
scanf("%f", &length);
if( (length - 0) < 0.000001 ){
break;
}
int posi = findIndex(1, index-1, length);
printf("%d card(s)/n", posi);
}
return 0;
}