2.28 奇安信笔试
两道编程题.
第一道,一对兔子五个月成年便可以生兔子,给一对兔子求n月有多少对,动态规划。
if __name__ == '__main__': dp = [0, 1, 1, 1, 1, 2] n = int(input()) if n > 5: for i in range(6, n+1): dp.append(dp[i-1] + dp[i-4]) print(dp[-1]) else: print(dp[n])
第二道,1000个硬币里有10个金硬币,求选n个能选到金硬币的个数。
#include <vector>
#include <cstdio>
using namespace std;
int main() {
int n;
scanf("%d", &n);
if(n > 990) {
printf("%.6f", 1.);
}
else {
if(n == 1)
printf("%.6f", 0.01);
else{
vector<double> dp {0.01};
for(double i = 1.; i < n; ++i) {
dp.push_back(1.-(1.-dp[i-1])*((1000.-i+1.-10.)/(1000.-i+1.)));
// printf("%f", 1.-(1.-dp[i-1])*((1000.-i+1.-10.)/(1000.-i+1.)));
}
printf("%f", dp[n-1]);
}
}
return 0;
}
没过所有用例,估计是计算精度有问题。
一个小时,马上还要继续做心动网络的笔试......
#奇安信##笔试题目#
查看9道真题和解析