首页 > 其他 > 详细

hdu1099

时间:2017-01-25 00:56:01      阅读:137      评论:0      收藏:0      [点我收藏+]

#include<iostream>
using namespace std;

__int64 gcd(__int64 a,__int64 b)
{
return b?gcd(b,a%b):a;
}

__int64 lcm(__int64 a,__int64 b)
{
return a/gcd(a,b)*b;
}

int numlen(__int64 n)
{
int len=0;

while(n)
{
n/=10;
len++;
}
return len;
}

int main()
{
__int64 s,m,g,d;
int l1,l2,i,n;

while(scanf("%I64d",&n)==1)
{
m=1; //分母
s=0; //分子
for(i=1;i<=n;i++)
m=lcm(m,i);
for(i=1;i<=n;i++)
s+=m/i;
s*=n;
g=gcd(m,s); //求最大公约数
s/=g;
m/=g;
d=s/m; //整数部分
s%=m;
if(s==0)
{
printf("%d\n",d);
continue;
}
l1=numlen(d);
l2=numlen(m);
for(i=0;i<=l1;i++)
putchar(‘ ‘);
printf("%I64d\n",s);
printf("%I64d ",d);
for(i=1;i<=l2;i++)
putchar(‘-‘);
putchar(‘\n‘);
for(i=0;i<=l1;i++)
putchar(‘ ‘);
printf("%I64d\n",m);
}
return 0;
}

hdu1099

原文:http://www.cnblogs.com/wangkun1993/p/6348082.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!