/*
ID: cjn77881
LANG: C++
TASK: palsquare
*/
#include <stdio.h>
#include <string.h>
typedef struct RubyArray RubyArray;
struct RubyArray{
char a[20];
};
int N;
RubyArray s;
RubyArray makeString(int x,int N){
RubyArray s;
if (x==0){
strcpy(s.a,""); //strcpy可以无视字串之间定义时的位数差
return s;
}
s = makeString(x/N,N); //迭代思想,简化代码
int len = strlen(s.a); //不写这句会有乱码
s.a[len] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[x%N]; //这种写法很好用,快速提取某进制下的值
s.a[len+1]='\0'; //表明字串到此为止
return s;
}
bool ispal(char *s){
char *t; //s为字符串首位元素的地址,s+strlen(s)-1为该串末位地址,*s 与 *t 为串中该地址中存储元素内容,strlen(s)为s地址开头的字符串长度。
for (t = s+strlen(s)-1;s<t;s++,t--) if (*s != *t) return false;
return true;
}
int main(){
FILE *fin = fopen("palsquare.in","r");
FILE *fout = fopen("palsquare.out","w");
fscanf(fin,"%d",&N);
for (int i=1;i<=300;i++){
s = makeString(i*i,N);
if (ispal(s.a)) fprintf(fout,"%s %s\n",makeString(i,N).a,s.a);
}
return 0;
}
USACO 1.3.4_palsquare
最新推荐文章于 2022-12-04 11:40:57 发布