求助题目
查看原帖
求助题目
141335
qwq2519楼主2021/9/29 16:46
#include<iostream>
#include<cstdio>
#define rep(i,j,k) for(register int i(j);i<=k;++i)
#define drp(i,j,k) for(register int i(j);i>=k;--i)
#define repg(x) for(register int i(G.head[x]);i;i=G.next[i])
#define bug cout<<"~~~~~~~~~~~~~"<<'\n';
#define bugout(x) cout<<x<<'\n';
using std::cin;
using std::cout;
typedef long long lxl;
template<typename T>
inline T  max( T a, T b) {
	return a > b ? a : b;
}
template<typename T>
inline T  min( T a, T b) {
	return a < b ? a : b;
}

inline char gt() {
	static char buf[1 << 21], *p1 = buf, *p2 = buf;
	return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2) ? EOF : *p1++;
}
template <typename T>
inline void  read(T &x) {
	register char ch = gt();
	x = 0;
	int w(0);
	while(!(ch >= '0' && ch <= '9'))w |= ch == '-', ch = gt();
	while(ch >= '0' && ch <= '9')x = x * 10 + (ch & 15), ch = gt();
	w ? x = ~(x - 1) : x;
}
template <typename T>
inline void out(T x, char cc) {
	if(x < 0) x = -x, putchar('-');
	char ch[20];
	int num(0);
	while(x || !num) ch[++num] = x % 10 + '0', x /= 10;
	while(num) putchar(ch[num--]);
	putchar(cc);
}

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

int n;
lxl ansa, ansb;


inline void plus(int x) {
	lxl t = x * ansb / gcd(ansb, x); //¡Á?D?1?¡À?¨ºy
	lxl f = n;
	ansa = ansa * (t / ansb);
	f = f * (t / x);//¨ª¡§¡¤?

	ansa += f; //   ans/t

	lxl d = gcd(ansa, t);
	ansa /= d;
	t /= d; //??¡¤?
	ansb = t;
}

inline int num(lxl x) {
	int ans(0);
	while(x) {
		x /= 10;
		ans++;
	}
	return ans;
}

int main() {
	freopen("233.txt", "w", stdout);
	while(cin >> n) {
		ansa = n;
		ansb = 1;
		rep(i, 2, n ) {
			plus(i);
		}
		if(ansb == 1) {
			out(ansa, '\n');
			continue;
		}

		lxl t = ansa / ansb;
		
		ansa -= t * ansb;

		int lent = num(t);
		int lenb = num(ansb);

		rep(i, 1, lent + 2) {
			putchar(' ');
		}
		out(ansa, '\n');

		putchar(' ');
		out(t, ' ');
		rep(i, 1, lenb) {
			putchar('-');
		}
		putchar('\n');
		rep(i, 1, lent + 2) {
			putchar(' ');
		}
		out(ansb, '\n');
	}

	return 0;
}

另外一道双倍经验过了。这题输出格式也改了。。能过样例啊,肉眼对比。。但是wa#1

2021/9/29 16:46
加载中...