这题硬搜就是,不过在提交前找到两个mistack:
2、在转换进制的时候,犯了一个超级低级的错误,把进制顺着使用了,也就是说比如13的二进制是:1101,而我的程序做出来就是1011,弄翻了!当然,很快就改好了,提交,一次性AC!
LANG:
C
ID: yylogoo1
PROG:
palsquare
/
#include <stdio.h>
#define MAP
"0123456789ABCDEFGHIJ"
#define MAX 18
int n;
char str[MAX];
int isreback(char str, int len)
{
int i, j;
i = 0, j = len – 1;
while(i < j){
if(str[i++] !=
str[j–]){
return 0;
}
}
return 1;
}
int change(int num)
{
/
mistack
2:
这里写错了,str应该是逆向的方式写的!
/
int i = MAX;
while(num != 0){
str[–i] = MAP[num %
n];
num /= n;
}
return i;
}
int ispal(int num)
{
int i, len;
i =
change(num);
len = MAX – i;
return isreback(&str[i], len);
}
void output(int num)
{
printf("%s",
&str[change(num)]);
}
int main(void)
{
int i;
freopen("palsquare.in", "r", stdin);
freopen("palsquare.out", "w", stdout);
scanf("%d", &n);
for(i = 1; i <= 300; i++){
/
mistack
1:
题目没审清楚, 只要求平方是回文数,
而没要求自己也是回文数数
/
if(ispal(i
i)){
output(i);
printf(" ");
output(i *
i);
printf("\n");
}
}
return 0;
}