1373번 - 2진수 8진수
코드는 아래와같습니다. 문자배열을 이용하였고, 비트를 이용하여 계산하였습니다. 출력은 scanf의 long long oct 양식을 이용하였습니다. 로컬환경에서는 잘되는데 (계산기를 이용해서 비교해보아도 잘되었습니다.) 제출한 족족 틀렸습니다.
혹시 arr를 널 문자로 초기화 시켜주지 않았을까 싶어서
scanf("%s", arr) 위에 for(i=0; i<1000001;i++) arr[i]='\0'; 도 수행해보았으나 역시 틀렸습니다. 무엇이 문제인지 잘모르겠습니다 . 도와주세요 ㅠ
#include <stdio.h>
char arr[1000001];int main(){
int i; long long int num=0; scanf("%s", arr); for(i=0;i<1000001;i++) if(arr[i]=='\0') break;
int len=i-1; for (i=len;i>=0; i--) num=num|(arr[i]-'0')<<(len-i);
printf("%llo\n", num);
return 0;}
아하 문제의 의도를 이해했습니다. 8진수로 변환하여도 최대값은 long long int 를 뛰어넘는군요 이런; 뻘질문이였네요
댓글을 작성하려면 로그인해야 합니다.
gaelim 6년 전 1
코드는 아래와같습니다. 문자배열을 이용하였고, 비트를 이용하여 계산하였습니다. 출력은 scanf의 long long oct 양식을 이용하였습니다. 로컬환경에서는 잘되는데 (계산기를 이용해서 비교해보아도 잘되었습니다.) 제출한 족족 틀렸습니다.
혹시 arr를 널 문자로 초기화 시켜주지 않았을까 싶어서
scanf("%s", arr) 위에 for(i=0; i<1000001;i++) arr[i]='\0'; 도 수행해보았으나 역시 틀렸습니다. 무엇이 문제인지 잘모르겠습니다 . 도와주세요 ㅠ
#include <stdio.h>
char arr[1000001];
int main(){
int i;
long long int num=0;
scanf("%s", arr);
for(i=0;i<1000001;i++) if(arr[i]=='\0') break;
int len=i-1;
for (i=len;i>=0; i--)
num=num|(arr[i]-'0')<<(len-i);
printf("%llo\n", num);
return 0;
}