码迷,mamicode.com
首页 > 其他好文 > 详细

usaco Palindromic Squares

时间:2015-08-26 22:02:22      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

我会告诉你进制转换我都忘了,翻出了数字逻辑课本才想起来的。

/*
ID: modengd1
PROG: palsquare
LANG: C++
*/
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
using namespace std;
char leter[20]={‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘,‘G‘,‘H‘,‘I‘,‘J‘};
//进制转换,将x转化为base进制的数的字符串表示形式存入out数组
void changetheBase(int x,int base,char out[60])
{
    stack<char> S;
    int i=0;
    while(x>0)
    {
        S.push(leter[x%base]);
        x/=base;
    }
    for(i=0;!S.empty();i++)
    {
        out[i]=S.top();
        S.pop();
    }
    out[i]=0;
}
//检测一个以‘\0‘结尾的字符串是不是回文串
bool isPalindromic(char input[60])
{
    int temp[60];
    int len=strlen(input);
    for(int i=0;i<len;i++)
    {
        temp[len-i-1]=input[i];
    }
    for(int i=0;i<len;i++)
    {
        if(input[i]!=temp[i])
            return false;
    }
    return true;
}

int main()
{
    freopen("palsquare.in","r",stdin);
    freopen("palsquare.out","w",stdout);
    int square[301],base;

    scanf("%d",&base);
    for(int i=1;i<=300;i++)
    {
        char out1[60],out2[60];
        changetheBase(i,base,out1);
        changetheBase(i*i,base,out2);
        if(isPalindromic(out2))
        {
            cout<<out1<<‘ ‘<<out2<<endl;
        }
    }
    return 0;
}

  

usaco Palindromic Squares

标签:

原文地址:http://www.cnblogs.com/modengdubai/p/4761709.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!