80pts求助
查看原帖
80pts求助
244294
__Chtholly楼主2023/7/10 19:41
#include<cstdio>

#define ll unsigned long long 

ll n;

ll up=0,down=1,front=0;

ll gcd(ll a,ll b){if(!b)return a;return gcd(b,a%b);}

void add(ll up1,ll down1,ll up2,ll down2){
	ll kst=down1*down2;
	ll upkst=up1*down2+up2*down1;
	
	if(upkst == 0)return ;
	ll gcdd=gcd(kst,upkst);
	kst/=gcdd,upkst/=gcdd;
	up=upkst,down=kst;
}

void jw(){
	if(up<down)return ;
	front+=(up/down);
	up%=down;	
	add(0,1,up,down);
}

ll len(ll x){
	ll num=0;
	while(x>0){x/=10,num++;}
	return num;	
}
signed main(){
	scanf("%lld",&n);
	for(register ll i=1;i<=n;++i){
		add(1,i,up,down);
		jw();
	}
	front*=n,up*=n;
	jw();
	if(up==0)printf("%lld\n",front);
	else{
		ll lenf=len(front);
		for(register ll i=1;i<=lenf;++i)printf(" ");
		printf("%lld\n",up);
		printf("%lld",front);
		ll len2=len(down);
		for(register ll i=1;i<=len2;++i)
			printf("-");
		printf("\n");
		for(register ll i=1;i<=lenf;++i)
			printf(" ");
		printf("%lld\n",down);	
	}
	return 0;
}
2023/7/10 19:41
加载中...