Creative Code

[17214번]다항 함수의 적분 본문

백준 문제풀이

[17214번]다항 함수의 적분

빛하루 2023. 9. 6. 22:01

https://www.acmicpc.net/problem/17214

 

17214번: 다항 함수의 적분

첫째 줄에 최대 일차 일변수 다항식이 주어진다. 항의 개수는 최대 2개이고, 변수는 항상 x로 주어지며, 각 항은 공백 문자로 구분되지 않는다. 주어지는 계수는 절댓값이 10,000을 넘지 않는 0이

www.acmicpc.net

#include <iostream>
#include <string>
using namespace std;
int main() {
	string str;
	cin >> str;
	int a = 0;
	int b = 0;
	if (str.find('x') != string::npos) {
		string str1 = "";
		int index = 0;
		while (str[index] != 'x') {
			str1 += str[index];
			index++;
		}
		a = stoi(str1);
		if (str.size() != str.find('x') + 1) {
			b = stoi(str.substr(str.find('x') + 1));
		}
		else {
			b = 0;
		}
	}
	else {
		a = 0;
		b = stoi(str);
	}

	string s2 = "";
	if (b > 0 && a != 0) {
		s2 += "+";
	}
	s2 += to_string(b);
	if (a != 0 && b == 1) {
		s2 = "+";
	}
	else if (a != 0 && b == -1) {
		s2 = "-";
	}
	else if (a == 0 && b == 1) {
		s2 = "";
	}
	else if (a == 0 && b == -1) {
		s2 = "-";
	}

	if (a != 0 && a != 2 && a != -2 && b != 0) {
		cout << a / 2 << "xx" << s2 << "x+W" << '\n';
	}
	else if (a != 0 && a != 2 && a != -2 && b == 0) {
		cout << a / 2 << "xx+W" << '\n';
	}
	else if (a == 0 && b != 0) {
		cout << s2 << "x+W" << '\n';
	}
	else if (a == 0 && b == 0) {
		cout << "W" << '\n';
	}
	else if (a == 2 && b != 0) {
		cout << "xx" << s2 << "x+W" << '\n';
	}
	else if (a == 2 && b == 0) {
		cout << "xx+W" << '\n';
	}
	else if (a == -2 && b == 0) {
		cout << "-xx+W" << '\n';
	}
	else if (a == -2 && b != 0) {
		cout << "-xx" << s2 << "x+W" << '\n';
	}

}

'백준 문제풀이' 카테고리의 다른 글

[2096번]내려가기  (0) 2023.09.24
[1107번]리모컨  (0) 2023.09.24
[16496번]큰 수 만들기  (0) 2023.09.06
[7869번]두 원  (0) 2023.09.05
[2981번]검문  (0) 2023.09.04