题意:
回文数是指从左向右念和从右向左念都一样的数。如12321就是一个典型的回文数。
给定一个进制B(2<=B<=20,由十进制表示),输出所有的大于等于1小于等于300(十进制下)且它的平方用B进制表示时是回文数的数。用’A’,’B’……表示10,11等等。
题解:数制转换一下
代码:
/*
ID: lishicao
PROG: palsquare
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std ;
ifstream fin ( "palsquare.in" ) ;
ofstream fout ( "palsquare.out" ) ;
int B ;
char num[30] ;
char function[20] = { '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' ,
'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' } ;
bool check()
{
for( int i = 0 ; i < strlen( num ) ; i ++ )
if( num[i] != num[strlen( num ) - i - 1] ) return false ;
return true ;
}
void getnum( int number )
{
memset( num , 0 , sizeof( num ) ) ;
char temp[30] ;
int i , j ;
int base = B ;
i = 29 ;
while( number != 0 )
{
int tmp = number % base ;
tmp /= base / B ;
temp[i] = function[tmp] ;
number -= tmp * ( base / B ) ;
base *= B ;
i -- ;
}
i ++ ;
for( j = 0 ; i <= 29 ; i ++ , j ++ )
num[j] = temp[i] ;
}
int main()
{
int i , j , number ;
fin >> B ;
for( i = 1 ; i <= 300 ; i ++ )
{
number = i * i ;
getnum( number ) ;
if( check() ) {
getnum( i ) ;
fout << num << " " ;
getnum( number ) ;
fout << num << endl ;
}
}
}
代码写得好搓啊
分享到:
相关推荐
USACO题目Palindromic Squares(回文平方数)及代码解析
usaco 2005年比赛的解题报告以及测试数据
包括usaco2004年比赛的解题报告以及测试数据
包括usaco2003年比赛的解题报告及测试数据
包括usaco2003年比赛的解题报告及测试数据
usaco5.2解题报告1
usaco2.1解题报告1
usaco2.3解题报告1
usaco1.3解题报告1
usaco2.4解题报告1
usaco解题报告,就是usaco.training.gateway上面的题目全解
ACM----USACO Training(解题博客网),提供了USACO Training解题的代码,可以参考一下
第一行应该包括一个正整数:子任务 A 第二行应该包括子任务 B 的解 第二问的要求是最少添加多少条有向边可以使得整张图任意一个学校有软件,其
本章主要衔接第二章,题目类型不定描述农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。约翰已经给他
1.歌曲必须按照创作的时间顺序在 CD 盘上出现 2.选中的歌曲数目尽可能地多 3.不仅同光盘上的歌曲写入时间要按顺序,前一张光盘上的歌曲不能比后一张
因为 10=2*5,所以每有一个 0 就有一对 2*5=10 出现,反之,如果这个数的质因数分解没有成对的 2,5,我们就可以简单的对 10 求模,而不用管前面
1.假设一个 nxn 的拉丁方在固定第一行和第一列的情况下的构造数目是 L[n],那 2.最后一行不用构造,如果搜索完 N-1 行,到达第 N 行,那么一定存在
第一行 优惠商品的种类数(0 ) 第二行..第 s+1 行 每一行都用几个整数来表示一种优惠方式 第一个整数 n 第一行: 两个用空格隔开的
3 5 6 4 2 1 3 5 7 6 4 2 3 5 4分析:先观察样例数据,如果把还没移动的那一步也算上,那么空格的位置为4 3 5 6 4 2 1 3 5
第二行到第 N+1 行: 每行有三个整数,Si, Ei, 和 Ci 第一个星期,农夫约翰随便地让 第一行 两个整数,N (0 ) 和 M