- 张家宁 的博客
八月DAY4
- @ 2024-8-10 20:17:31
A.多项式输出
思路
本题是分类讨论,但情况可能很多
- 如果(为输入的数组)大于0且不是第一个,那么输出
+ - 如果等于0,那么跳过
- 如果小于0,那么输出
- - 如果
^后面的数是1,就只输出一个 - 如果
^后面的数为0,就只输出 - 如果是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.潜伏者
思路
- 用两个哈希表对应的密文和的原文。
- 输入的每一个字符都进行判断(题目要求)。
- 然后对照字母表有没有全部字母都有密文。
- 输出翻译的原文
代码
#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.细胞分裂
思路
根据分解质因子来判断是否可以。