https://www.acmicpc.net/problem/17214
낮은 정답률을 가지고 있는 문제, 이게 왜 골드 문제지 하고 제출했다가
많이 실수 할 수 있는 문제이다.
문제 풀이
일단 경우의 수는
- 일차항+상수항
- 일차항
- 상수항
이렇게 3가지가 있는데 1차항과 상수항을 적분했을때 계수의 절댓값이 1이 나올때의 처리와,
상수항이 0만 있을때를 고려해서 코드를 작성해야 한다.
코드는 다음과 같다.
#include <bits/stdc++.h>
using namespace std;
string s;
string n("");
bool ze=false;
bool twox=false;
int main(){
cin >> s;
for(int i=0;i<s.length();i++){
if(s[i]=='x'){
if(stoi(n)/2==-1) cout << '-';
else if(stoi(n)/2!=1) cout << stoi(n)/2;
cout << "xx";
n="";
ze=false;
twox=true;
}
else if(n==""){
n=s[i];
ze=true;
}
else n+=s[i];
}
if(ze && abs(stoi(n))!=0){
if(n=="+1") cout << "+";
else if(n=="-1") cout << "-";
else if(n!="1") cout << n;
cout << "x+W";
}
else if(twox) cout << "+W";
else cout << 'W';
}