//這是我寫的,雖然邏輯有點亂,但測試都過了,卻過不了OJ
#include<iostream>
using namespace std;
int a[100];
char b[7];
int n,r;
int change_s(int n,int r)
{
int count=0;
if(r>10)
{
b[0]='A';
for(int i=1;i<7;i++)
{
b[i]=b[i-1]+1;
}
while(n!=0)
{
a[count]=n%r;
n=n/r;
count++;
}
for(int j=count-1;j>=0;j--)
{
if(a[j]<10)
cout<<a[j];
else
{
for(int i=0;i<7;i++)
{
if(a[j]-10==i)
cout<<b[i];
}
}
}
cout<<endl;
return 0;
}
if(n<0)
{
n=-n;
while(n!=0)
{
a[count]=n%r;
n=n/r;
count++;
}
cout<<"-";
for(int j=count-1;j>=0;j--)
{
cout<<a[j];
}
cout<<endl;
return 0;
}
while(n!=0)
{
a[count]=n%r;
n=n/r;
count++;
}
for(int j=count-1;j>=0;j--)
{
cout<<a[j];
}
cout<<endl;
return 0;
}
int main()
{
while(cin>>n>>r)
{
change_s(n,r);
}
return 0;
}
//借鑑前輩的代碼
#include<iostream>
using namespace std;
char a[100];
int n,r,temp,len;
int change(int n,int r)
{
int i=0;
if(n>0) //考慮n爲負數的情況
temp=n;
else
temp=-n;
while(temp)
{
a[i]=temp%r+'0';
if(a[i]-'9'>0) a[i]=a[i]-'9'+64;//判斷存的是數字還是字母
temp/=r;
i++;
}
len=i;
return 0;
}
int main()
{
int n,r;
while(cin>>n>>r)
{
len=0;//初始化
change(n,r);
if(n<0)
cout<<"-";
for(int i=len-1;i>=0;i--)
{
cout<<a[i];
}
cout<<endl;
}
return 0;
}
hdu 2031 進制轉換
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.