1.2 Palindromic Squares

       給出進制N(2<=N<=20),求1至300範圍內其平方表示成N進制後爲迴文數的全部數字,輸出這些數字和對應的平方迴文。ios

       問題很簡單,直接對1至300範圍內的每一個數平方,而後用除k取餘法求其k進製表示,判斷是否爲迴文,是的話則輸入該數及其平方。spa

 

/*
ID: whutzha1
PROG: palsquare
LANG: C++
*/
//#include<iostream>
#include<fstream>
using namespace std;
ifstream cin("palsquare.in");
ofstream cout("palsquare.out");
int main()
{
   int b;
   cin>>b;
   int i,j1,j2,k;
   int arr1[20];
   int arr2[20];
   for (i=1;i<=300;i++)
   {
     k=i*i;
	 j1=-1;
	 while(k)
	 {
       j1++;
	   arr1[j1]=k%b;
	   k=k/b;
	 }
	 bool flag=true;
	 for (k=0;k<=j1/2;k++)
	 {
	    if (arr1[k]!=arr1[j1-k])
		{
			flag=false;
	        break;
		}
	 }
	 if (flag)  
	 {
	   k=i;
	   j2=-1;
	   while(k)
	   {
       j2++;
	   arr2[j2]=k%b;
	   k=k/b;
	   }
       for(k=j2;k>=0;k--)
	   {
		 if(arr2[k]<10)
			cout<<arr2[k];
         else
		    cout<<(char)(arr2[k]+55);	 
	   }
			cout<<" ";
		for(k=0;k<=j1;k++)
		{
		  if(arr1[k]<10)
			cout<<arr1[k];
         else
		    cout<<(char)(arr1[k]+55);
		}
		cout<<endl;
	 }
   }
   return 0;
}
相關文章
相關標籤/搜索