CSP-J/S 2024 大家一起rp++!
  • 板块灌水区
  • 楼主Quartz_Blocks
  • 当前回复10
  • 已保存回复10
  • 发布时间2024/10/25 22:05
  • 上次更新2024/10/25 23:39:57
查看原帖
CSP-J/S 2024 大家一起rp++!
1059176
Quartz_Blocks楼主2024/10/25 22:05

wgzs.

祝愿所有人都能够rp++,杜绝AFO

J组 倒计时

rp爆炸,运行可以让rp+=inf(使用了高精度):

#include <bits/stdc++.h>
using namespace std;
namespace ll{
	const int MAX_LIMIT = 10000;//
	struct long_long{
		short x[MAX_LIMIT],len;
//		long_long(){
//			memset(x,0,sizeof(x));
//			len = 1;
//		}
	};
	const long_long _1 = {{0,1},1};
	const long_long _0 = {{0,0},1};
	const long_long _2 = {{0,2},1};
	const long_long _5 = {{0,5},1};
	const long_long _10 = {{0,0,1},2};
	const long_long _100 = {{0,0,0,1},3};
//	const long_long _inf = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},60};
	long_long operator + (const long_long &a,const long_long &b){
		long_long c;
		memset(c.x,0,sizeof(c.x));
		c.len = max(a.len,b.len);
		for(int i = 1;i <= c.len;i++){
			c.x[i] += a.x[i]+b.x[i];
			c.x[i+1] = c.x[i]/10;
			c.x[i] %= 10;
		}
		if(c.x[c.len+1]) c.len++;
		return c;
	}
	void operator += (long_long &a,const long_long &b){
		long_long c;
		memset(c.x,0,sizeof(c.x));
		c.len = max(a.len,b.len);
		for(int i = 1;i <= c.len;i++){
			c.x[i] += a.x[i]+b.x[i];
			c.x[i+1] = c.x[i]/10;
			c.x[i] %= 10;
		}
		if(c.x[c.len+1]) c.len++;
		a = c;
		return;
	}
	bool operator == (const long_long &a,const long_long &b){
		if(a.len != b.len) return 0;
		for(int i = 1;i <= a.len;i++){
			if(a.x[i] != b.x[i]) return 0;
		}
		return 1;
	}
	bool operator != (const long_long &a,const long_long &b){
		if(a.len == b.len) return 0;
		for(int i = 1;i <= a.len;i++){
			if(a.x[i] != b.x[i]) return 1;
		}
		return 0;
	}
	bool operator > (const long_long &a,const long_long &b){
		if(a.len > b.len) return 1;
		else if(a.len < b.len) return 0;
		for(int i = a.len;i >= 1;i--){
			if(a.x[i] > b.x[i]) return 1;
			else if(a.x[i] < b.x[i]) return 0;
		}
		return 0;
	}
	bool operator < (const long_long &a,const long_long &b){
		if(a.len < b.len) return 1;
		else if(a.len > b.len) return 0;
		for(int i = a.len;i >= 1;i--){
			if(a.x[i] < b.x[i]) return 1;
			else if(a.x[i] > b.x[i]) return 0;
		}
		return 0;
	}
	long_long operator * (const long_long &a,const long_long &b){
		long_long ans;
		memset(ans.x,0,sizeof(ans.x));
		ans.len = a.len+b.len-1;
		for(int i = 1;i <= a.len;i++){
			for(int j = 1;j <= b.len;j++){
				ans.x[i+j-1] += a.x[i] * b.x[j];
				ans.x[i+j] += ans.x[i+j-1] / 10;
				ans.x[i+j-1] %= 10;
			}
		}
		if(ans.x[ans.len+1]) ans.len++;
		return ans;
	}
	void out(const long_long &x){
		for(int i = x.len;i >= 1;i--){
			cout << x.x[i];
		}
		return;
	}
	void operator *= (long_long &a,const long_long &b){
		long_long ans;
		memset(ans.x,0,sizeof(ans.x));
		ans.len = a.len+b.len-1;
		for(int i = 1;i <= a.len;i++){
			for(int j = 1;j <= b.len;j++){	
				ans.x[i+j-1] += a.x[i] * b.x[j];
				ans.x[i+j] += ans.x[i+j-1] / 10;
				ans.x[i+j-1] %= 10;
			}
		}
		if(ans.x[ans.len+1]) ans.len++;
		a = ans;
		return;
	}
	void print(const string &s,const long_long &a){
		int k = s.length();
		for(int i = 0;i < k;i++){
			if(i + 3 <= k && s[i] == '%' && s[i+1] == 'l' && s[i+2] == '_' && s[i+3] == 'l'){
				i = i+4;
				for(int i = a.len;i >= 1;i--){
					cout << a.x[i];
				}
			}else if(i+1 <= k && s[i] == '\\' && s[i+1] == 'n'){
				i = i+2;
				cout << endl;
			}
		}
	}
	void operator ++ (long_long &a){
		a += _1;
	}
	long_long lpow(long_long x,int y){
		if(y == 0) return _1;
		long_long xx = x;
		y--;
		while(y--){
			x = x*xx;
//			out(x);
//			cout << endl;
		} 
		return x;
	}
	long_long lmin(const long_long &x,const long_long &y){
		return (x < y ? x : y);
	}
	long_long lmax(const long_long &x,const long_long &y){
		return (x > y ? x : y);
	}
	long_long to_ll(int x){
		long_long res;
		memset(res.x,0,sizeof(res.x));
		res.len = 0;
		while(x > 0){
//			cout << endl << x << ' ' << res.len << ' ' << x%10 << endl;
			res.x[++res.len] = x%10;
			x /= 10;
		}
//		res.len--;
		return res;
	}
	long_long in(){
		string s;long_long res = _0;
		cin >> s;
		for(int i = 0;i < s.length();i++){
			res = res*_10+to_ll(int(s[i]-'0'));
		}
	}
	void lmemset(long_long a[],const long_long &sum,const int &len){
		for(int i = 0;i <= len;i++) a[i] = sum;
	}
}
using namespace ll;
int main(){
	long_long rp = _0;
	long_long inf = _0;
	for(int i = 0;i <= 10000;i++){
		inf += _100;
	}
	while(1){
		rp += inf;
		out(rp);
		cout << endl;
		inf += inf;
	}
}
2024/10/25 22:05
加载中...