經典進制轉換——USACO Palindromic Squares
Sample Input
10
Sample Output
1 1
2 4
3 9
11 121
22 484
26 676
101 10201
111 12321
121 14641
202 40804
212 44944
264 69696
這里簡單說一下base的意思和用法,
base 10,就是十進制的意思
#include "iostream"
#include "string"
#include "cstring"
using namespace std;
int bit[20]={0};
char chbit[20]={'0'};
char forbit[20]={'0'};
int pos, TenBase, pos1;
void ChTen(int base, int num) //將十進制的數 轉化成相應的進制 數組形式的
{
int i;
for(i=0; num>0; i++)
{
bit[i] = num%base;
num /= base;
}
pos = i-1; //統計字符串長度
}
bool Judge() //判斷字符數組是否為回文
{
pos1 = pos;
for(int i=0; i<=pos; i++)
{
if(bit[i]<10)
chbit[i] = bit[i]+48;
else
chbit[i] = bit[i] - 10 + 'A';
}
for(int i=0, j=pos1; i<=j; i++, j--)
if(chbit[i]!=chbit[j])
return false;
return true;
}
int main()
{
int base, TenNum;
cin>>base;
for(int m=1; m<=300; m++)
{
TenNum = m*m;
ChTen(base, TenNum);
if(Judge())
{
ChTen(base, m);
for(int i=0; i<=pos; i++)
{
if(bit[i]<10)
forbit[i] = bit[i]+48;
else
forbit[i] = bit[i] - 10 + 'A';
}
for(int i=pos; i>=0; i--)
cout<<forbit[i];
cout<<" ";
for(int i=pos1; i>=0; i--)
cout<<chbit[i];
cout<<endl;
}
}
}
posted on 2011-10-16 11:00 More study needed. 閱讀(252) 評論(0) 收藏 舉報
浙公網安備 33010602011771號