标签:scanf 桌子 scan printf hang 格式 1.0 log main
题意:在桌子边上叠纸牌,使纸牌超出桌边的长度最长,并且不能掉下去。
即重心最多在桌子边缘上,问给你N张纸牌,最长能超出桌子边缘多长。
把第一块木板的重心放在第二块木板的右边缘,把这两块木板的重心放在第三块
木板的右边缘,把这三块木板的重心放在第四块木板的右边缘??利用杠杆原理
可以推出,如果每块木板都是单位长,那么 n 块木板可以伸出桌面 (1 + 1/2 +
1/3 + … + 1/n) / 2 个单位的长度。
最终得到一个递推式:a[i] = a[i-1] + 1.0/i/2
(格式很重要)
1 #include<stdio.h> 2 #include<string.h> 3 4 int main(){ 5 double arr[100010]; 6 arr[1]=0.5; 7 for(int i=2;i<=100000;i++) 8 arr[i]=arr[i-1]+1.0/i/2; 9 int n; 10 printf("# Cards Overhang\n"); 11 while(scanf("%d",&n)!=EOF){ 12 printf("%5d%10.3lf\n",n,arr[n]); 13 } 14 return 0; 15 }
标签:scanf 桌子 scan printf hang 格式 1.0 log main
原文地址:http://www.cnblogs.com/Leonard-/p/6358311.html