//poj 2625
//sep9
#include <iostream>
using namespace std;
typedef __int64 INT;
INT n,up,down;
INT gcd(INT x,INT y)
{
return x%y==0?y:gcd(y,x%y);
}
void add(INT x,INT y)
{
if(down==0){
up=x;
down=y;
return ;
}
INT a=x*down+y*up;
INT b=y*down;
up=a;
down=b;
}
INT get_len(INT x)
{
INT sum=0;
while(x){
x=x/10;
++sum;
}
return sum;
}
int main()
{
while(scanf("%I64d",&n)==1&&n){
down=0;
for(INT i=n-1;i>=0;--i){
add(n,n-i);
INT d=gcd(up,down);
up=up/d,down=down/d;
}
if(down==1){
printf("%I64d\n",up);
continue;
}
INT x=up/down,y=up%down,z=down;
INT len1=get_len(x);
INT len2=get_len(z);
for(INT i=0;i<=len1;++i)
printf(" ");
printf("%I64d\n%I64d ",y,x);
for(INT i=0;i<len2;++i)
printf("-");
printf("\n");
for(INT i=0;i<=len1;++i)
printf(" ");
printf("%I64d\n",z);
}
return 0;
}
poj 2625 概率dp
最新推荐文章于 2019-03-13 22:45:20 发布