矩阵求和-HDOJ2156
2014-03-26 18:55
225 查看
Problem Description
我们定义如下矩阵:
1/1 1/2 1/3
1/2 1/1 1/2
1/3 1/2 1/1
矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。
请求出这个矩阵的总和。
Input
每行给定整数N (N<50000),表示矩阵为 N*N.当N为0时,输入结束。
Output
输出答案,保留2位小数。
这道题目我用数学归纳法做出来了,代码如下:
网上找了个更简单的答案,成功AC。
我们定义如下矩阵:
1/1 1/2 1/3
1/2 1/1 1/2
1/3 1/2 1/1
矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。
请求出这个矩阵的总和。
Input
每行给定整数N (N<50000),表示矩阵为 N*N.当N为0时,输入结束。
Output
输出答案,保留2位小数。
这道题目我用数学归纳法做出来了,代码如下:
#include <iostream> #include <iomanip> using namespace std; double f(int n) { double sum=0; for(int i=1;i<=n;i++) { sum+=1.0/(i+1); } return sum; } double Func(int n) //得到真因子之和 { if(n==1) return 1; else if(n==2) return 3; else return Func(n-1)+1+2*f(n-1); } int main() { int n; while(cin>>n && n) { cout<<setprecision(2)<<std::fixed<<Func(n)<<endl; } return 0; }可惜的是,运行时间超时。
网上找了个更简单的答案,成功AC。
#include <iostream> #include <iomanip> using namespace std; int main() { int N; while(cin>>N && N) { int i,n; double sum=0; n=N-1; for(i=2;i<=N;i++) { sum+=n*1.0/i; n--; } sum=sum*2+N; cout<<setprecision(2)<<std::fixed<<sum<<endl; } return 0; }规律不言自明,看来自己的观察还千火候啊!
相关文章推荐
- 矩阵求和-HDOJ2156
- HDOJ(HDU) 2156 分数矩阵(嗯、求和)
- HDOJ(HDU) 2156 分数矩阵(嗯、求和)
- hdoj 1588 矩阵快速幂 二分等比数列求和模板
- HDOJ 2156 分数矩阵(水题)
- HDOJ 2156 分数矩阵 (数学题)
- HDOJ 2156 分数矩阵
- hdoj-2156-分数矩阵
- HDOJ2156分数矩阵
- Hdoj2015_偶数求和
- Matrix hdoj 5671(矩阵处理)
- hdoj 5895 Mathematician QSC 【数论----矩阵快速幂求解类斐波那契数列】
- hdu--1506--矩阵求和<stack>
- Hdu-2156-分数矩阵 [水题]
- HDOJ2015 偶数求和
- HDOJ 题目5097 Page Rank(矩阵运算,模拟)
- 矩阵求和
- hdoj 4990 Reading comprehension(矩阵快速幂)
- c++上机实验6-项目3矩阵求和
- C++第六次上机作业-矩阵求和