HDU2156 分数矩阵

我们定义如下矩阵: 
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位小数。

Sample Input

1
2
3
4
0

Sample Output

1.00
3.00
5.67
8.83

观察规律,除了1有n个,1/2有2*(n-1)个,1/3有2*(n-2)个,1/i有2*(n-(i-1))个

好的,加起来就可以了。但是要注意数据类型,float不够,AC不了。

#include<stdio.h>
#include<math.h>
//返回i/1的个数。
int f(float  i,long n)
{
	return 2*(n-i+1);
}
int main()
{
	long n;
	while(~scanf("%ld",&n)&&n){
		double i,s=0;

	for(i=2;i<=n;i++)
	{
		s+=f(i,n)*(1/i);
	}
	printf("%.2lf\n",s+n);
	}
	
 } 

OK,AC注意类型哦

扫描二维码关注公众号,回复: 2397298 查看本文章

猜你喜欢

转载自blog.csdn.net/weixin_42324904/article/details/81167326