萌新用的高精,不知道哪里的问题,请求dalao帮助
查看原帖
萌新用的高精,不知道哪里的问题,请求dalao帮助
393190
aldol_reaction楼主2020/11/6 19:57

我知道字符串会很简单。。emmm想练习一下高精度,发现样例一直跑不出来QAQ。主要问题还是我发现Bigint输入不进去。。可能我重载>>有问题,但是找不到错啊QAQ。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<stack>
#include<set>
using namespace std;

#define maxn 200

struct Bigint {
	int len, a[maxn];
	Bigint(int x = 0) {
		memset(a, 0, sizeof(a));
		for(len = 0; x; len++) { //len
			a[len] = x % 10, x /= 10;
		}
	}
	int& operator [](int i) { 
		return a[i];
	}
	void flatten(int L) { 
		len = L;//
		for(int i = 0; i < len; i++) {
			a[i+1] += a[i] / 10, a[i] %= 10;
		}
		for(; !a[len];) len--;
	}
	void print(void) {
		for(int i = max(0, len); i >= 0; i--)
			printf("%d", a[i]); 
	}
};

istream& operator >>(istream& in, Bigint a) {
	string str;
	in >> str;
	int len = str.length();
	for(int i = 0; i < len; i++) a[len-i-1] = str[i] - '0';
	return in;
}

ostream& operator <<(ostream& out, Bigint a) {
	a.flatten(a.len);
	for(int i = a.len; i; i--) out << a[i];
	return out;
}

bool operator > (Bigint a, Bigint b) {
	if(a.len == b.len) {
		for(int len = a.len; len >= 0; len--)
			if(a[len] != b[len]) return a[len] > b[len];
		return false;
	} else return a.len > b.len;
}

struct Node {
	int id;
	Bigint t;
} node[25];

bool cmp(Node p, Node q) {
	return p.t > q.t;
}

int n;

int main() {
	cin >> n;
	for(int i = 0; i < n; i++) {
		node[i].id = i;
		cin >> node[i].t;
	}
	sort(node, node+n, cmp);
	cout << node[0].id+1 << endl << node[0].t;
	return 0;
}
2020/11/6 19:57
加载中...