社区讨论

myoj5109 81%求调

灌水区参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lojil1xh
此快照首次捕获于
2023/11/04 11:58
2 年前
此快照最后确认于
2023/11/04 14:23
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
#define N int(1e9)+5
#define INF 0x3f3f3f3f
using namespace std;

int main () {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	int t;
	scanf("%d", &t);
	while(t--) {
		map<long long, long long, greater<long long>> mp;//first:指数 second:系数 
		long long c, n, m;
		scanf("%lld", &c);
		for(int i = 1;i <= c;i++) {
			scanf("%lld%lld", &n, &m);
			if(mp.find(m) == mp.end()) {
				mp[m]=n;
			} else{
				mp[m]+=n;
			}
		}
		bool flag=false;
		for(pair<long long, long long> p:mp) {
			if(p.second==0) continue;
			if(flag==false) {//如果没有输出 
				flag=true;
				if(p.first>1) {//如果指数>1 
					if(p.second==1) printf("x^%lld", p.first);
					else if(p.second==-1) printf("-x^%lld", p.first);
					else printf("%dx^%lld", p.second, p.first);
				}else if(p.first==0) {//如果指数为0 
					printf("%lld", p.second);
				}else{//如果指数为1 
					if(p.second==1) printf("x");
					else if(p.second==-1) printf("-x");
					else if(p.second>1) printf("%lldx", p.second);
					else printf("%lldx", p.second);
				}
				
			}else if(p.first>1) {//如果指数>1 
				if(p.second==1) printf("+x^%lld", p.first);
				else if(p.second==-1) printf("-x^%lld", p.first);
				else if(p.second>0) printf("+%lldx^%lld", p.second, p.first);
				else printf("%lldx^%lld", p.second, p.first);
			}else if(p.first==0) {//如果指数为0 
				if(p.second>0) printf("+%lld", p.second);
				else printf("%lld", p.second);
			}else{//如果指数为1 
				if(p.second==1) printf("+x");
				else if(p.second==-1) printf("-x");
				else if(p.second>1) printf("+%lldx", p.second);
				else printf("%lldx", p.second);
			}
		}
		if(flag==false) printf("0");
		printf("\n");
	}
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...