기초연습-2
1695 단어 토대
시간 제한: 1.0s 메모리 제한: 512.0MB
문제 설명
n개의 16진수 정수를 정하고 대응하는 8진수를 출력합니다.
입력 형식
입력한 첫 번째 동작은 정수 n (1<=n<=10) 입니다.
다음 n행은 0~9, 대문자 A~F로 구성된 문자열로 변환할 16진수 양의 정수를 나타내며 각 16진수 길이는 100000을 초과하지 않습니다.
출력 형식
각 비헤이비어에 해당하는 8진수 양의 정수를 입력하는 n행을 출력합니다.
주의
입력한 16진수에는 012A와 같은 선도 0이 없습니다.
출력의 8진수도 전도 0이 있을 수 없다.
샘플 입력
2
39
123ABC
샘플 출력
71
4435274
프롬프트
먼저 16진수를 어떤 진수로 변환한 다음에 어떤 진수에서 8진수로 변환한다.
#include <stdio.h>
#include <string.h>
#include <math.h>
int num[400004],ans[400004];
int swapOXtoEIGHT(char s[])
{
int len =strlen(s);
int i,a;
int count=len*4;
memset(num,0,sizeof(num));
memset(ans,0,sizeof(ans));
for(i=len-1;i>=0;i--)
{
int j=0;
if(s[i]>=65)
{
a = s[i]-55;
}
else
{
a = s[i]-48;
}
for(j=1;j<=4;j++)
{
--count;
num[count] = a%2;
a = a/2;
}
}
count=len*4%3;
a=0;
if(count==1)
{
ans[0]=num[0];
a++;
}
else if(count==2)
{
ans[0]=num[0]*2+num[1];
a++;
}
for(i=count;i<len*4;i=i+3)
{
ans[a++]=num[i]*4+num[i+1]*2+num[i+2];
}
for(i=0;i<a;i++)
{
if(ans[i]!=0)
break;
}
for(i=i;i<a;i++)
{
printf("%d",ans[i]);
}
printf("
");
return 0;
}
int main()
{
int n;
char s[100001];
while(scanf("%d",&n)!=EOF)
{
while(n--)
{
scanf("%s",s);
swapOXtoEIGHT(s);
}
}
return 0;
}
코드는 참고만 제공합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[파이썬 기초] 파이썬의 특수한 방법을 이해하고 코드를 읽어주세요!이번에는 파이톤의'특별한 방법'에 대한 해설을 진행한다. 나는 파이톤의 실제 업무에서 다른 사람이 쓴 코드를 자주 읽는다. 익숙하지 않으면 무엇을 하고 있는지 모르지만 시간만 지나갈 수 있다. 이런 상황을 방지하기 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.