8 solutions
-
1
#A1078. 求分数序列和
我的号真成解说了?这题是斐波那契数列变式,使用两个斐波那契数解决
为了防止数据量多造成超时,建议使用空间换时间方法(内存限制256MiB,绰绰有余)
第一步:生成两个数组,提前填好数
模板:
//不包括前两个数 for(int i=2;i<n;++i) { p[i]=p[i-1]+p[i-2]; q[i]=q[i-1]+q[i-2]; }
第二步:计算累加和
模板:
for(int i=0;i<n;++i) { sum+=(double)p[i]/q[i]; }
第三步:输出
//这里不会的话赶紧回炉重造
学习去!别烦我!
-
0
#include<bits/stdc++.h> using namespace std; double q[35]={0,2,3},p[35]={0,1,2}; short n; double num,sum=3.5; int main(){ cin>>n; if(n==0){ sum=0; printf("%.4lf",sum); return 0;} if(n==1){ sum=2; printf("%.4lf",sum); return 0;} if(n==2){ sum=3.5; printf("%.4lf",sum); return 0;} for(int i=3;i<=n;i++){ q[i]=q[i-1]+q[i-2]; p[i]=p[i-1]+p[i-2]; sum+=q[i]/p[i]; } printf("%.4lf",sum); return 0; }
-
-1
#include <bits/stdc++.h> using namespace std; int main(int argc, char **argv){ int n;double p[35],q[35],sum = 1.0 * (1.0 * 2 / 1); // q为分子,p为坟墓 p[0] = 1; q[0] = 2; cin >> n; for (int i = 1;i < n;i++){ q[i] = q[i - 1] + p[i - 1]; p[i] = q[i - 1]; sum += 1.0 * (q[i] / p[i]); } printf("%.4f",sum); return 0; } // q[i + 1] = q[i] + p[i] // p[i + 1] = q[i] // p[1] = 1 // q[1] = 2
- 1
Information
- ID
- 568
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- # Submissions
- 134
- Accepted
- 71
- Uploaded By