개인 자료란 (JE)

  서버 커뮤니티

Profile 배고픈상어-효묘 대표칭호 없음
Profile

커뮤니티 소통 개발하기 잡담

백준1212문제

2020.04.09 조회 수 165 추천 수 0

분명 맞는거같은데 왜이럴까요..?  

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<iostream>
using namespace std;;
int _pow(int x, int e) {
	if (e == 0)
		return 1;
	return x * _pow(x, e - 1);
}
void convert_prt(int _x) {
	int x = _x;
	int sum = 0;
	int i = 0;
	while (x != 0) {
		int n = x % 10;
		sum += n * _pow(8, i++);
		x /= 10;
	}
	x = sum;
	int k = 1 << 30;
	bool isStart = false;
	while (k != 0) {
		if ((k&x) != 0) {
			isStart = true;
			printf("1");
		}
		else if (isStart) {
			printf("0");
		}
		k = k >> 1;
	}
	return;
}
int main()
{
	int oct;
	scanf("%d",&oct);
	if (oct == 0) {
		printf("0");
	}
		
	convert_prt(oct);
	return 0;
}





3개의 댓글

Kramnik
2020.04.10

적당히 큰 수에서는 좋은 방법임은 틀림없습니다. 다만, 문제의 조건 "첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다." 에서 알 수 있듯, 8진수 30만자리의 수라면 10진수로 변환하여 푸는 것은 특정한 입력에서는 어려울 수도 있겠네요. (이용하시는 c++에서는 반드시 overflow가 발생하게 됩니다)

한자리씩 읽어서 8진수 -> 2진수로 바꾸어 세 자리씩 출력하고, 첫 번째 인식은 1로 시작하게 하면 overflow를 피할 수 있습니다.

건승을 빕니다.
=============

다시 보니 입력에서도 overflow가 발생하겠군요. 인식도 문자 각각에 대해 하시는 것이 좋겠습니다.

Kramnik
2020.04.10
@Kramnik

해당 문제에 대한 예시답안입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#import <cstdio>
char oct[333335]={};
int j;
void firstbinary(char a){
    int b=a-48,x=4,check=0;
    for (int i=1;i<=3;i++){
        if ((b%(2*x))/x==1){
        printf("1");
        check=1;
        }
        else if (check==1) printf("0");
        else if (i==3) printf("0");
        x=x/2;
    }
    return;
}
void binary(char a){
    int b=a-48,x=4;
    for (int i=1;i<=3;i++){
        printf("%d",(b%(2*x))/x);
        x=x/2;
    }
    return;
}
int main()
{
    fgets(oct,333335,stdin);
    firstbinary(oct[0]);
    for (j=1;oct[j]>=48;j++){
        binary(oct[j]);
    }
    return 0;
}
cs

 

우섭
2020.05.05

와! 백준나왔다!

뉴스 및 창작물
/files/thumbnails/115/774/003/262x150.crop.jpg?20240424234825

업데이트

마인크래프트 1.20.5 정식 업데이트

학교가기싫다

2024-04-24

0

/files/thumbnails/762/770/003/262x150.crop.jpg?20240418073724

레드스톤

T.B.H (고민중독) | 노트블럭 버전 | NoteBlock Cover [한국어 영어 중국어 가사 추가]

노트블럭전문가

2024-04-18

0

/files/thumbnails/218/767/003/262x150.crop.jpg?20240412130213

레드스톤

우리의 꿈 - 원피스 오프닝

노트블럭전문가

2024-04-12

0

/files/thumbnails/505/766/003/262x150.crop.jpg?20240411122306

레드스톤

기동전사 건담 수성의 마녀 | 노트블럭 커버 1

노트블럭전문가

2024-04-11

1

/files/thumbnails/932/765/003/262x150.crop.jpg?20240410124459

레드스톤

마인크래프트 노트블록으로 만든 『 밤양갱 (Bam Yang Gang) 』

노트블럭전문가

2024-04-10

0