一个c语言编程

来源:百度知道 编辑:UC知道 时间:2024/06/14 17:42:13
Problem Description

将十进制整数n转换成k进制数。( -1000000 <= n <= 1000000, 2 <= k <= 9 )

Input

输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据. 每组测试数据包括整数n和k。

Output

对于每个n,先输出n, 然后输出一个空格,最后输出对应的k进制数。

Sample Input

5
5 3
123 8
0 5
-12 2
1 2

Sample Output

5 12
123 173
0 0
-12 -1100
1 1

#include<stdio.h>
#include<math.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,k,a,i=0,m;
int s=0;
scanf("%d%d",&n,&k);
m=n;
while(1)
{
a=m%k;
m=m/k;
s=s+pow(10,i)*a;
i++;
if(m==0)
break;
}
printf("%d %d\n",n,s);
}
return 0;
}

思路错了,看下数据范围就知道了,100W 之内,100W 大约是 2的20次方,写成二进制的话有 20位左右,明显超出 int 类型的范围。

这题还是用数组来存放结果比较好