奇安信笔试第一道题C++保留小数的问题
昨天第一道题只过了10%,代码如下:
#include <bits/stdc++.h> using namespace std; double a = 990; double b = 1000; double rec(int x,double ans){ if(x!=0) return rec(--x,ans*(a-x+1)/(b-x+1)); else return ans; } int main(){ int n; cin>>n; double sum = 1; printf("%f",(1-rec(n,sum))); }
今天想了一下或许每次运算都要保存6位小数
想了两种case:
1.每次只保留六位小数进行运算
//保存六位小数 double round(double number) { int c = number*1000000; double number = (double) c/1000000; return number; }
2.每次四舍五入保留六位小数进行运算
//四舍五入保存六位小数 double round(double number { stringstream ss; ss << fixed << setprecision(6) << number; ss >> number; return number; }
#奇安信##笔试题目#个人还是倾向于第二种,可惜没数据测了