#include <stdio.h>
#include <string.h>
char a[1002], b[1002], c[2003], tmp[2003];
int as, bs, cs;
int al, bl, nl;
char* max, * min;
int maxl, minl;
int i, j, k;
void reverse(char* n) {
nl = strlen(n);
for (i = 0; i < nl; i++) tmp[i] = n[nl - 1 - i];
for (i = 0; i < nl; i++) n[i] = tmp[i];
}
void add() {
c[maxl] = '0';
c[maxl + 1] = 0;
for (i = 0; i < maxl; i++) c[i] = max[maxl - 1 - i];
for (i = 0; i < minl; i++) c[i] += min[minl - 1 - i] - '0';
for (i = 0; i < maxl; i++) {
if (c[i] > '9') {
c[i] -= 10;
c[i + 1]++;
}
}
if (as) {
if (c[maxl] == '0') c[maxl] = '-';
else {
c[maxl + 1] = '-';
c[maxl + 2] = 0;
}
} else {
if (c[maxl] == '0') c[maxl] = 0;
}
reverse(c);
}
void sub() {
int k = maxl;
for (i = 0; i < maxl; i++) c[i] = max[maxl - 1 - i];
for (i = 0; i < minl; i++) c[i] -= min[minl - 1 - i] - '0';
for (i = 0; i < maxl; i++) {
if (c[i] < '0') {
c[i] += 10;
c[i + 1]--;
}
}
while (k > 0 && c[--k] == '0') {}
if (k == 0) {
c[++k] = 0;
reverse(c);
return;
}
if ((!as && max == b + bs) || (as && max == a + as)) {
c[++k] = '-';
}
c[++k] = 0;
reverse(c);
}
void mul() {
int m, n, o;
reverse(max);
reverse(min);
for (i = 0; i < maxl + minl; i++) c[i] = '0';
c[maxl + minl] = 0;
for (i = 0; i < maxl; i++) {
for (j = 0; j < minl; j++) {
m = max[i] - '0';
n = min[j] - '0';
o = m * n;
c[i + j] += o % 10;
if (c[i + j] > '9') {
c[i + j] -= 10;
c[i + j + 1]++;
}
c[i + j + 1] += o / 10;
if (c[i + j + 1] > '9') {
c[i + j + 1] -= 10;
c[i + j + 2]++;
}
}
}
if (as != bs) {
if (c[maxl + minl - 1] == '0') c[maxl + minl - 1] = '-';
else {
c[maxl + minl] = '-';
c[maxl + minl + 1] = 0;
}
} else {
if (c[maxl + minl - 1] == '0') c[maxl + minl - 1] = 0;
}
reverse(c);
}
int main() {
scanf("%s\n %s", a, b);
if (*a == '-') as++;
if (*b == '-') bs++;
al = strlen(a + as);
bl = strlen(b + bs);
if ((al > bl) || (al == bl && strcmp(a + as, b + bs) >= 0)) {
max = a + as;
maxl = al;
min = b + bs;
minl = bl;
} else {
max = b + bs;
maxl = bl;
min = a + as;
minl = al;
}
if (!as && !bs) {
add();
printf("%s\n", c);
sub();
printf("%s\n", c);
mul();
printf("%s\n", c);
} else if (!as && bs) {
sub();
printf("%s\n", c);
add();
printf("%s\n", c);
mul();
printf("%s\n", c);
} else if (as && !bs) {
sub();
printf("%s\n", c);
add();
printf("%s\n", c);
mul();
printf("%s\n", c);
} else if (as && bs) {
add();
printf("%s\n", c);
sub();
printf("%s\n", c);
mul();
printf("%s\n", c);
}
}
나눗셈 문제는 진짜 하루종일 리트하며 겨우겨우 맞췄는데
이거는 한방에 맞춰서 기분 개좋아
알고리즘 씹꿀잼이노
이정도면 브론즈 4 빠른 승급 ㅇㅈ?
몇번인데
2338
잉? string으루 받아서 풀었? ㄸ;
글쿤.. ㄷ;
일부러 저렇게 푼건가
저렇게 안하면 못풀어 문제를 읽어봐
진짜네 ㅋㅋ
15353번 ㄱㄱ 저게 언어제한이 없어서 브론즈로 매겨진거
먼 이상한 소리야?
15353 2338번 둘다 봤는데 브5라서 그렇게 안 풀어도 되는데??
브5가 c cpp 기준으로 매겨지는게 아님 - dc App
코딩한게 c 아님 ??
ㅇㅇ 그니깐 딴 언어로 플어야 브 5 수준인거고 문제를 읽어봐라 c로 컨테이너 안만들고 저걸 어케 푸냐 - dc App