问题 F: 回文数
时间限制: 1 Sec 内存限制: 128 MB
题目描述
如果一个数从左边读和从右边读一样,那么我们说这是一个回文数。
例如,75457是一个回文数。当然,数的这个特性还依赖于表示它的进制。如果用十进制表示17,它不是回文数;但是如果用二进制(10001)表示它,它就是一个回文数。
本题的目标是,输入一个整数n和它的进制d,判断整数n在d进制下是否为回文数。
输入
第一行输入一个数 T 表示有 T 组测试数据。
接下来的T行,每行两个数,分别是整数 n 和进制 d 。
输出
若是回文数,则输出"Number'n'is palindromein basis 'd'"(不包括引号),若不是回文数,则输出"Number 'n' is not palindrome inbasis 'd'"(不包括引号)。
样例输入
2
17 2
19 4
样例输出
Number 17 is palindromein basis 2
Number 19 is notpalindrome in basis 4
T_T 什么都不说了,最开始做的时候思路完全错了,直接导致Error
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char buff[128];
void deal()
{
int dec,binary;
scanf("%d %d",&dec,&binary);
int orgdec=dec;
memset(buff,0,128);
int i=0;
while(dec>=binary)
{
buff[i++]='0'+dec%binary;
dec=dec/binary;
}
buff[i]='0'+dec;
int len=strlen(buff);
int slen=len/2;
#ifndef __GNUC__
printf("%s\n",buff);
#endif
for(i=0;i<slen;i++)
{
if(buff[i]!=buff[len-i-1])
{
printf("Number %d is not palindrome in basis %d\n",orgdec,binary);
return;
}
}
printf("Number %d is palindrome in basis %d\n",orgdec,binary);
}
int main()
{
int all;
scanf("%d",&all);
for(;all>0;all--)
{
deal();
}
return 0;
}