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;
}

+ Recent posts