方法一
---
#include <stdio.h>
int main(void)
{
int x,r,a[100],i,j;
while (scanf("%d %d",&x,&r)!=EOF) {
if (x<0) {
printf("-");
x=-x;
}
for (i=0; x>=r; i++) {
a[i]=x%r;
x=x/r;
}
a[i]=x;
for (j=i; j>=0; j--) {
if (a[j]<=9) {
printf("%d",a[j]);
}
else{
printf("%c",65+a[j]-10);
}
}
printf("\n");
}
return 0;
}
方法二:
----
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
int main()
{
int n;
int r;
char s[1000];
while(scanf("%d %d",&n,&r)!=EOF)
{
if(n>=0)
{
printf("%s\n",strupr(itoa(n,s,r)));
}
else
{
printf("-%s\n",strupr(itoa(-n,s,r)));
}
}
}
// strupr 将字符串中的小写字母转换为大写字母,itoa 功能为 把一个整数转换为字符串,格式为 itoa(num,string.r) 其中r 为任意进制
*提交使用语言为C++
*提交使用语言为C++
[TIPS]
1.汉字的ASLL码为负。且一个汉字算两个字符,需要除2;
2.求最大公约数 gcd
while (b != 0)
{
t = b;
b = a % b;
a = t;
}