解题思路:自然数的个数递推式:h[i] = h[1] + h[2] +...+ h[i/2]; s[i] 为h[i] 前缀和,所以h[i] = 1 + s[i/2](扩展出的自然数包括i本身); 计算前缀和s[i] = s[i-1] + h[i];
注意事项:
参考代码:
#include<iostream> #include<limits> using namespace std; const int N = 1e5 + 10; int h[N],s[N]; int main() { int n; cin >> n; for(int i = 1; i <= n; i ++){ h[i] = 1 + s[i/2]; s[i] = s[ i - 1 ] + h[i]; } cout << h[n]; return 0; }
0.0分
1 人评分
Lucky Word (C++代码)浏览:935 |
人见人爱A+B (C语言代码)浏览:789 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:574 |
C语言训练-斐波纳契数列 (C语言代码)浏览:2826 |
大神老白 (C语言代码)浏览:715 |
C二级辅导-同因查找 (C语言代码)浏览:585 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:612 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:968 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:520 |
校门外的树 (C语言代码)浏览:961 |