#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("%dn",d); continue; } l1=numlen(d); l2=numlen(m); for(i=0;i<=l1;i ) putchar(' '); printf("%I64dn",s); printf("%I64d ",d); for(i=1;i<=l2;i ) putchar('-'); putchar('n'); for(i=0;i<=l1;i ) putchar(' '); printf("%I64dn",m); } return 0; }
hdu1099
2018-06-04 11:40:55
浏览数 (1)