문제 링크입니다: https://www.acmicpc.net/problem/8713
8713번: Znak działania
Napisz program, który wczyta dwie liczby całkowite a i b, a następnie wstawi znak działania '+', '-' albo '*' między nimi, w taki sposób, aby wynik działania był jak największy. Jeżeli można uzyskać największy wynik za pomocą więcej niż je
www.acmicpc.net
출력되는 모든 음수들을 괄호로 감싸야합니다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <string> | |
#include <algorithm> | |
using namespace std; | |
const int MAX = 3; | |
typedef struct | |
{ | |
int calc, idx; | |
} State; | |
bool cmp(State a, State b) | |
{ | |
return a.calc < b.calc; | |
} | |
void printNumber(int a) | |
{ | |
if (a >= 0) | |
{ | |
cout << a; | |
} | |
else | |
{ | |
cout << "(" << a << ")"; | |
} | |
} | |
int main(void) | |
{ | |
ios_base::sync_with_stdio(0); | |
cin.tie(0); | |
int a, b; | |
cin >> a >> b; | |
State result[MAX] = { {a + b, 0}, {a - b, 1}, {a*b, 2} }; | |
sort(result, result + MAX, cmp); | |
if (result[2].calc == result[1].calc) | |
{ | |
cout << "NIE\n"; | |
return 0; | |
} | |
printNumber(a); | |
switch (result[2].idx) | |
{ | |
case 0: | |
cout << "+"; | |
break; | |
case 1: | |
cout << "-"; | |
break; | |
case 2: | |
cout << "*"; | |
break; | |
} | |
printNumber(b); | |
cout << "="; | |
printNumber(result[2].calc); | |
cout << "\n"; | |
return 0; | |
} |


개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > BOJ' 카테고리의 다른 글
백준 8716번 Pole (0) | 2021.06.27 |
---|---|
백준 8714번 Monety (0) | 2021.06.27 |
백준 8678번 Zbiór (0) | 2021.06.27 |
백준 8674번 Tabliczka (0) | 2021.06.27 |
백준 8661번 Stopki (0) | 2021.06.27 |