진 변환 HDU 2031 주의 - 2147483648 이 양수 로 변 한 후 int 메모리 로 넘 칩 니 다.
진 변환
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 29942 Accepted Submission(s): 16585
Problem Description
10 진수 N 을 입력 하여 R 진수 출력 으로 변환 합 니 다.
Input
입력 데 이 터 는 여러 개의 테스트 인 스 턴 스 를 포함 하고 모든 테스트 인 스 턴 스 는 두 개의 정수 N (32 비트 정수) 과 R (2 < = R < = 16, R < > 10) 을 포함 합 니 다.
Output
모든 테스트 인 스 턴 스 출력 변환 후의 수 를 위해 출력 마다 한 줄 을 차지 합 니 다.R 이 10 보다 크 면 해당 하 는 숫자 규칙 은 16 진법 (예 를 들 어 10 은 A 로 표시 하 는 등) 을 참고 합 니 다.
Sample Input
7 2
23 12
-4 3
Sample Output
111
1B
-11
Author
lcy
c + + 를 사용 하면 함 수 를 직접 사용 할 수 있 습 니 다.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int a,b;
char c[100];
while(~scanf("%d%d",&a,&b))
{
if(a<0)
{
printf("-");
a=-a;
}
itoa(a,c,b);
strupr(c);
puts(c);
}
return 0;
}
그리고 자신 이 쓰 면 0 과 - 2147483648 이라는 두 가지 데 이 터 를 주의해 야 합 니 다.
#include <iostream>
#include <cstring>
using namespace std;
long long N,R,k;//
char number[1000];
int NintoR()
{
int flag = 0,j = 0,mod;
if(N < 0) {flag = 1;N = -1*N;}
else if(N == 0) {number[j++] = '0';return j;}
while(N != 0)
{
mod = N % R;
if(mod < 10) number[j++]= mod + '0';
else number[j++] = mod + 55;
N = N / R;
}
if(flag) number[j++] = '-';
return j;
}
int main()
{
while(cin >> N >> R)
{
memset(number,'\0',sizeof(int)*100);
k = NintoR();
for(int i = k - 1;i >= 0; i--)
cout << number[i];
cout << endl;
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ACM - 계산 기하학 적 Pick - up sticks -- poj 2653Description Stan has n sticks of various length. The data for each case start with 1 <= n <= 100000, the number of stick...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.