임의의 진 변환

1564 단어 알고리즘ACM
진법 전환 은 우리 가 자주 만난다.
이렇게 좋 은 템 플 릿 을 만 났 으 니 서둘러 써 라. 어렵 지 는 않 지만.
앞으로 블 로그 에 아이디어 좀 써 주세요.
진 변환.
1. 우 리 는 변환 할 숫자 와 이 숫자의 진, 그리고 변환 할 진 을 입력 합 니 다.
2. 임 의 진법 이기 때문에 우 리 는 같은 것 을 10 진법 으로 바 꾼 다음 에 10 진법 에서 우리 가 원 하 는 진법 으로 전환한다.
2.1 은 바로 10 진법 으로 바 뀌 었 을 때 이다. 우 리 는 먼저 입력 한 숫자 (문자 유형 이기 때문에 직접 조작 할 수 있 는 숫자 로 바 뀌 었 다. 여 기 는 아 스 코 코드 와 int 가 상응 하 게 바 뀌 었 다. 이것 은 c 언어 기초 지식) 를 처리 한 다음 에 우 리 는 이 를 10 진법 sum 으로 바 꾸 어 처음부터 하나씩 하 는 것 을 잊 지 말 아야 한다. * 진법 을 잊 지 말 아야 한다.
2.2 바로 이 10 진법 의 수 를 우리 가 원 하 는 진수 로 바 꾸 는 것 이다. 즉, 진 을 제외 한 나머지 는 0 으로 나 눌 때 까지 배열 로 저장 하 는 것 이다.배열 에 저 장 된 순 서 는 반대 입 니 다. 배열 을 거꾸로 해 야 합 니 다.이렇게 해서 우리 가 원 하 는 결과 가 나 왔 다.
(진법 16 등 이런 큰 진법 때문에 ABC 등 자모 가 나타 날 수 있 음 을 주의 하 십시오. 우 리 는 입 출력 변환 을 할 때 모두 고려 하고 처리 해 야 합 니 다)
아래 에 코드 붙 이기:
#include<iostream>
using namespace std;
//           
void convirsion( char *a ,char* b,int x,int y )
{
	__int64 sum=0 ;
	for(int i=0;i<a[i]!='\0';i++)
	{
		if(a[i]>='0'&&a[i]<='9')
			sum = sum*x+(a[i]-'0');
		else 
			sum=sum*x+(a[i]-'A'+10);
	}
	int k=0;
	while(sum)
	{
		int t = sum%y;
		if(t>9)
			b[k++]=t-10+'A';
		else
			b[k++]=t+'0';
		sum/=y;
	}
	for(int i=0;i<k/2;i++)
	{
		int t = b[i];
		b[i]=b[k-1-i];
		b[k-1-i] = t;
	}
	for(int i=0;i<k;i++)
	{
		cout<<b[i];
	}
	cout<<endl;
}
int main()
{
	char a[50],b[50];
	int x,y;
	while(1)
	{
		cin>>a>>x>>y;
		convirsion(a,b,x,y);
	}
}

됐어.
버 텨 주 셔 서 감사합니다.

좋은 웹페이지 즐겨찾기