首页 > 代码库 > HDU - 1330 Deck(物理学力矩)

HDU - 1330 Deck(物理学力矩)

题意:在桌子边上叠纸牌,使纸牌超出桌边的长度最长,并且不能掉下去。

即重心最多在桌子边缘上,问给你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 }

 

HDU - 1330 Deck(物理学力矩)