14623
#include <stdio.h>
#include <string.h>
// 자리 올림 함수
int carry(char *arr, int i){
if(arr[i] > 1){
arr[i] = 0;
arr[i+1] += 1;
return carry(arr, i+1);
}
else{
return i;
}
}
int main(void){
// 이진수 입력
char b1[31] = {0}, b2[31] = {0};
scanf("%s", &b1);
scanf("%s", &b2);
char result[61] ={0};
int result_len = 0;
// 이진수 곱
for(int i = 0; i < strlen(b2); i++){
for(int j = 0; j < strlen(b1); j++){
char c_b1 = b1[strlen(b1) - 1 - j] - 48;
char c_b2 = b2[strlen(b2) - 1 - i] - 48;
result[i+j] = result[i+j] + (c_b2 & c_b1);
// 자리올림
result_len = upmulti(result, i+j);
}
}
// 출력
for(int k = result_len+1; k >= 0; k--){
// 만약 가장 처음이 0 이면 다음으로 넘어감
if((k == result_len+1) && (!result[k])){
continue;
}
printf("%d", result[k]);
}
return 0;
}