ZOJ-1216 叠卡片

1216:多张卡片叠放在桌子边沿,问卡片最多能伸出多长。

设卡片有n张,最底层卡片伸出的部分比例为x,则未伸出占1-x.
均匀的杆密度一样可约掉。
有n-1张卡片叠在最底层上,将n-1块视为一体,重心在最底层的伸出端端点上。

以桌子角为支点  根据力矩  重量*距离  平衡
(1-x)*((1-x)/2) = x*(x/2) + (n-1)*x

         1-x | x 
      ============
————————

解得x=1/2n

因此一块时 1/2
两块时     1/2+1/4
三块时     1/2+1/4+1/6
......

#include<iostream>
using namespace std;
#include<stdio.h>

int main()
{
	int n;
	double res=0;
	printf("# Cards  Overhang\n");
	while(cin>>n)
	{
		res=0;
		for(int i=1;i<=n;i++)
			res+=1.0/(2*i);
		printf("%5d%10.3f\n", n, res);

	}
	
}


本题格式比较疼。。。
%5d 占5个右对齐
%10.3f  算上小数点共占10个,小数占3个 
打印的字符串单词间隔居然是两个空格 审题啊审题

你可能感兴趣的:(ZOJ)