[Swust OJ 797]--Palindromic Squares(回文数水题)

题目链接:http://acm.swust.edu.cn/problem/797/

Time limit(ms): 1000      Memory limit(kb): 10000

Description

Palindromes are numbers that read the same forwards as backwards. The number 12321 is a typical palindrome.

Given a number base B (2 <= B <= 20 base 10), print all the integers N (1 <= N <= 300 base 10) such that the square of N is palindromic when expressed in base B; also print the value of that palindromic square. Use the letters ‘A‘, ‘B‘, and so on to represent the digits 10, 11, and so on.

Print both the number and its square in base B.

Input

A single line with B, the base (specified in base 10).

Output

Lines with two integers represented in base B. The first integer is the number whose square is palindromic; the second integer is the square itself.

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

Hint

题目大意:一个n代表进制(n<=20),输出十进制数300以内的此时进制下的所有这个数的平方是回文数的所有数和它的平方

解题思路:直接转换判断就是了,判读回文可以利用回文数性质,在转换进制的数组中直接判断,具体的看代码

代码如下:

 1 #include<iostream>
 2 using namespace std;
 3 int n;
 4 char str[] = "0123456789ABCDEFGHIJ";
 5 void out(int x){
 6     int a[17], i = 0;
 7     while (x){
 8         a[++i] = x%n;
 9         x /= n;
10     }
11     for (; i; cout << str[a[i--]]);
12 }
13 void find(int x){
14     int a[17], i = 0, s = x*x, t;
15     while (s){
16         a[++i] = s%n;
17         s /= n;
18     }
19     t = i;
20     for (; i&&a[i] == a[t - i + 1]; --i); {
21         if (!i){
22             out(x), cout << ‘ ‘;
23             out(x*x), cout << endl;
24         }
25     }
26 }
27 int main()
28 {
29     cin >> n;
30     for (int i = 1; i <= 300; i++)
31         find(i);
32     return 0;
33 }

时间: 2024-11-04 16:07:38

[Swust OJ 797]--Palindromic Squares(回文数水题)的相关文章

LeetCode OJ Palindrome Number(回文数)

1 class Solution { 2 public: 3 bool isPalindrome(int x) { 4 int r=0,init=x; 5 if(init==0) return true; 6 if(init<0) return false; 7 while(init!=0){ 8 r=r*10+init%10; 9 init=init/10; 10 } 11 if(r==x) 12 return true; 13 else 14 return false; 15 } 16 };

CodeForces 548A Mike and Fax (回文,水题)

题意:给定一个字符串,问是不是恰好存在 k 个字符串是回文串,并且一样长. 析:没什么好说的,每次截取n/k个,判断是不是回文就好. 代码如下: #include<bits/stdc++.h> using namespace std; string s; bool judge(string s){ for(int i = 0, j = s.size()-1; i < s.size(); ++i, --j){ if(s[i] != s[j]) return false; } return

yzoi1109&amp;&amp;viojs1042最小步数的一点看法——回文数

Description - 问题描述 有一天,雄霸传授本人风神腿法第一式:捕风捉影..............的步法(弟子一:堂主,你大喘气呀.风:你给我闭嘴.)捕风捉影的关键是换气(换不好就会大喘气...). 使用捕风捉影这一招时并不是每一步都喘气,而是在特定的步数喘气.一般来说功力越高,喘气越稀疏.喘气的步数符合特定规律:第一要是SUSHU(弟子二:哇塞!堂主,你还会鸟语,我好好崇拜你呦!可是SUSHU是什么意思呢?风:笨蛋,那是汉语拼音!)第二要是一个回文数,回文数就是正反念一样的数,如:

OJ刷题之《有序回文数》

题目描述 有序回文数是一种很特殊的数,像43211234,321123,现在我把11称为一阶回文数,2112称为二阶回文数,以此类推. 小平刚开始学递归,想用递归的方法输出一个n(<=9)阶的回文数.你可以帮助他吗? 输入 一个整型变量n,表示第n阶回文数. 输出 第n阶回文数 样例输入 3 样例输出 321123 提示 主函数已给定如下,提交时不需要包含下述主函数 #include<stdio.h> int main() { int n; void digui(int); scanf(

回文数(swust oj-371)

回文数 Time Limit:   1000MS       Memory Limit:   65535KB Submissions:   70       Accepted:   12 Description 一个自然数如果把所有数字倒过来以后和原来的一样,那么我们称它为回文数.例如151和753357.我们可以把所有回文数从小到大排成一排:1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, ...注意10不是回文数,虽然我们可以把它写成010,但是在本题中前导0是不

合工大OJ 1331 回文数

Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数. 任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数,则重复上述步骤,一直到获得回文数为止. 例如: 68变成154(68+86),再变成605(154+451),最后变成1111(605+506),而1111是回文数. 于是有数学家提出一个猜想: 不论开始是什么正整数,在经过有限次正序数和倒序数相加的步骤后,都会得到一个回文数.至今为止还不知道这个猜

2016中国大学生程序设计竞赛(长春)-重现赛 1010Ugly Problem 回文数 模拟

Ugly Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 0    Accepted Submission(s): 0Special Judge Problem Description Everyone hates ugly problems. You are given a positive integer. You m

欧拉项目004:寻找最大的回文数

Problem 4: Largest palindrome product A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99. Find the largest palindrome made from the product of two 3-digit numbers. 寻找有两

(C语言)回文数的判断

问题描述: 判断一个数是否为回文数: 121: 12321: 1234321: 程序分析: 1. 回文数(palindromic number):是指一个数的最高位和最低位上的数相等,第二高位与次低位上的数相等,也就是关于中间"对称".如上面的三个数情况是一个回文数. 2.将这个数扩展成一个数组,将这个数的各个位上的数取出来并且一一赋给这个数组. 3.判断这个数组中的元素之间的关系是否符合回文数的特征.并且将结果输出.这个程序写了一个函数来实现这一功能. 代码如下: #include&