您的位置:首页 > 其它

平方和回文数

2015-09-05 22:20 183 查看


#include <stdio.h>
#include <memory.h>
#include <string.h>

char* f(int n, int b)
{
char* s= (char*)malloc(sizeof(char)*64);
int i=0;
while(n){
int t=n%b;
char c;
if(t<10) c='0'+t;
else c='A'+(t-10);
s[i++]=c;
n=n/b;
}
s[i]=0;
return s;
}

int h(char *s){
int n=strlen(s);
int i=0;
int j=n-1;
n=n/2;
for(;i<n;i++,j--)
{
if(s[i]!=s[j]) return 0;
}
return 1;
}

char* invert(char*s){
int n=strlen(s);
int i=0;
int j=n-1;
n=n/2;
for(;i<n;i++,j--)
{
if(s[i]!=s[j]){
char c=s[i];
s[i]=s[j];
s[j]=c;
}
}
return s;
}

int main(int argc, char* argv[]) {

int b;
while(scanf("%d",&b)!=EOF){
int i;
for(i=1;i<=300;i++){
char*s = f(i*i,b);
char*t = f(i,b);
if(h(s)){
printf("%s %s\n",invert(t),s);
}

free(s);
free(t);
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法