A.多项式输出

思路

本题是分类讨论,但情况可能很多

  1. 如果aia_iaia_i为输入的数组)大于0且不是第一个,那么输出+
  2. 如果aia_i等于0,那么跳过
  3. 如果小于0,那么输出-
  4. 如果^后面的数是1,就只输出一个aixa_ix
  5. 如果^后面的数为0,就只输出aia_i
  6. 如果aia_i是1或-1,那么就只用输出一个x^变量

代码

#include<bits/stdc++.h>
using namespace std;
int a[110];
int main(){
	freopen("poly.in","r",stdin);
	freopen("poly.out","w",stdout);
	int n;
	cin>>n;
	for(int i=n;i>=0;i--){
		cin>>a[i];
	}
	for(int i=n;i>=0;i--){
		if(a[i]>0&&i!=n){
			cout<<"+";
		}
		if(a[i]==0){
			continue;
		}
		if(a[i]<0){
			cout<<"-";
		}
		if(a[i]!=1&&a[i]!=-1){
			if(i==1){
				cout<<abs(a[i])<<string("x");
				continue;
			}
			if(i==0){
				cout<<abs(a[i]);
				return 0;
			}
			cout<<abs(a[i])<<string("x^")<<i;
		}else{
			if(i==1){
				cout<<string("x");
				continue;
			}
			if(i==0){
				cout<<abs(a[i]);
				return 0;
			}
			cout<<string("x^")<<i;
		}
		
	}
	return 0;
}

反思

没考虑清楚数据种类

B.潜伏者

思路

  1. 用两个哈希表对应aia_i的密文和bib_i的原文。
  2. 输入的每一个字符都进行判断(题目要求)。
  3. 然后对照字母表有没有全部字母都有密文。
  4. 输出翻译的原文

代码

#include<bits/stdc++.h>
using namespace std;
unordered_map<char,char> mp,pm;
char a[]={'A','B','C','D','E','F','G','H','I','G','K','L','N','M','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int main(){
	freopen("spy.in","r",stdin);
	freopen("spy.out","w",stdout);
	string c,a,b;
	cin>>a>>b>>c;
	for(int i=0;i<a.size();i++){
		if((pm[b[i]]!=a[i]&&'A'<=pm[b[i]]&&pm[b[i]]<='Z')||(mp[a[i]]!=b[i]&&'A'<=mp[a[i]]&&mp[a[i]]<='Z')){
			cout<<"Failed";
			return 0;
		}
		pm[b[i]]=a[i];
		mp[a[i]]=b[i];
	}
	for(int i=0;i<26;i++){
		if(!('A'<=pm[b[i]]&&pm[b[i]]<='Z')){
			cout<<"Failed";
			return 0;
		}
	}
	for(int i=0;i<c.size();i++){
		cout<<mp[c[i]];
	}
	return 0;
}

C.细胞分裂

思路

根据分解质因子来判断是否可以。