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; }没过所有用例,估计是计算精度有问题。
一个小时,马上还要继续做心动网络的笔试......
#奇安信##笔试题目#