USACO 1.2 Palindromic Squares (palsquare)

来源:互联网 发布:阿里云域名交易 编辑:程序博客网 时间:2024/04/28 23:25
/*ID: haolink1PROG: palsquareLANG: C++*///#include <iostream>#include <fstream>#include <vector>using namespace std;typedef unsigned int u_int;char num_map[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K'};//Transform demical to the value on target base,and then covert target value into //string in reverse order.void TransformBase(u_int base,u_int original_value,vector<char>& target_value){    while(original_value >= base){        target_value.push_back(num_map[original_value % base]);        original_value /= base;    }    target_value.push_back(num_map[original_value % base]);}bool IsPalindromic(vector<char>& value){    u_int len = value.size();    for(u_int i = 0; i < len/2; i++){        if(value[i] != value[len-1-i])            return false;    }    return true;}int main(){    ifstream fin("palsquare.in");    u_int base;    fin >> base;    ofstream fout("palsquare.out");    for(u_int i = 1; i <= 300; i++){        vector<char> target_value;        TransformBase(base,i*i,target_value);        if(IsPalindromic(target_value)){             vector<char> value;            TransformBase(base,i,value);            for(int j = value.size()-1; j >= 0; j--)                fout<<value[j];            fout<<" ";            for(int j = target_value.size()-1; j >= 0; j--)                fout<<target_value[j];             fout<<endl;        }    }}

0 0
原创粉丝点击