牛牛掷硬币
50分做法
由于n只有100,所以直接循环保留两位小数转换成字符串返回即可,注意精度问题,0.125如果直接输出是0.12,这里要补一下精度(比如+1e-9再输出)。时间复杂度o(n),空间复杂度o(1)。
100分做法
可以发现n>=9时概率保留两位只有0.00了,所以打表打出前9个的答案即可。如果不打表9以内的数可能会出现精度问题,出就出在n=4答案是0.125上,直接保留两位输出这个数你会发现输出的是0.12而不是0.13,所以先算小数再转化成字符串的做法请注意补精度。个人感觉数也不多,还是打表更加简单。时间复杂度o(1),空间复杂度o(1)。代码如下:
class Solution { public: /** * 返回一个严格四舍五入保留两位小数的字符串 * @param n int整型 n * @return string字符串 */ string Probability(int n) { // write code here string x[10]; x[1]="1.00"; x[2]="0.50"; x[3]="0.25"; x[4]="0.13"; x[5]="0.06"; x[6]="0.03"; x[7]="0.02"; x[8]="0.01"; x[9]="0.00"; if(n>9)n=9; return x[n]; } };