1. 程式人生 > >USACO 1.3.4_palsquare

USACO 1.3.4_palsquare

/*
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; }