洛谷P1206 [USACO1.2]回文平方数 Palindromic Squares

P1206 [USACO1.2]回文平方数 Palindromic Squares

  • 271通过
  • 501提交
  • 题目提供者该用户不存在
  • 标签USACO
  • 难度普及-

提交  讨论  题解

最新讨论

  • 暂时没有讨论

题目描述

回文数是指从左向右念和从右向左念都一样的数。如12321就是一个典型的回文数。

给定一个进制B(2<=B<=20,由十进制表示),输出所有的大于等于1小于等于300(十进制下)且它的平方用B进制表示时是回文数的数。用’A’,’B’……表示10,11等等

输入输出格式

输入格式:

共一行,一个单独的整数B(B用十进制表示)。

输出格式:

每行两个B进制的符合要求的数字,第二个数是第一个数的平方,且第二个数是回文数。

输入输出样例

输入样例#1

10

输出样例#1

1 1

2 4

3 9

11 121

22 484

26 676

101 10201

111 12321

121 14641

202 40804

212 44944

264 69696

说明

题目翻译来自NOCOW。

USACO Training Section 1.2

分析:看到1到300的平方就应该知道本题要枚举,那么枚举1到300的平方转换到B进制然后检验是否是回文数即可,关键是怎么转换进制呢?

如果10进制的数转换为n进制的数,那么就把这个数不断除以n,保留余数,除到商为0为止,那么把余数反过来就是结果了,举个例子:

3 / 2 = 1 ...... 1

1 / 2 = 0 ...... 1

那么答案就是11,如果是n进制数转换为10进制呢?那么从这个数的最右边一位开始乘n^(i-1),i是从右边起的第几位,最后加起来,举个例子:二进制11转换成10进制:

1 * 2^(1 - 1) + 1 * 2 ^ (2 - 1) = 3

原理就是数的表示:123可以表示为1*10^2 + 2 * 10 ^ 1 + 3 * 10 ^ 0.然后注意一下当数大于9的时候需要用字母表示即可.

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

const int maxn = 300;

int b,a[maxn];

void zhuanhuan(int x)
{
    int a1[maxn];
    int i = 0;
    while (x > 0)
    {
        a1[++i] = x % b;
        x /= b;
    }
    while (i)
    {
        if (a1[i] < 10)
            printf("%d", a1[i]);
        else
            printf("%c", a1[i] - 10 + ‘A‘);
        i--;
    }
}

void huiwen(int x1)
{
    int temp = 0;
    int x = x1 * x1;
    while (x > 0)
    {
        a[++temp] = x % b;
        x /= b;
    }
    int t = temp, i = temp;
    while (i > 0 && a[i] == a[t - i + 1])
        i--;
    if (i == 0)
    {
        zhuanhuan(x1);
        printf(" ");
        while (temp)
        {
            if (a[temp] < 10)
                printf("%d", a[temp]);
            else
                printf("%c", a[temp] - 10 + ‘A‘);
            temp--;
        }
        printf("\n");
    }
}

int main()
{
    scanf("%d", &b);
    for (int i = 1; i <= maxn; i++)
        huiwen(i);

    return 0;
}
时间: 2024-12-15 06:49:23

洛谷P1206 [USACO1.2]回文平方数 Palindromic Squares的相关文章

洛谷 P1206 [USACO1.2]回文平方数 Palindromic Squares

题目描述 回文数是指从左向右念和从右向左念都一样的数.如12321就是一个典型的回文数. 给定一个进制B(2<=B<=20,由十进制表示),输出所有的大于等于1小于等于300(十进制下)且它的平方用B进制表示时是回文数的数.用'A','B'--表示10,11等等 输入输出格式 输入格式: 共一行,一个单独的整数B(B用十进制表示). 输出格式: 每行两个B进制的符合要求的数字,第二个数是第一个数的平方,且第二个数是回文数. 输入输出样例 输入样例#1: 10 输出样例#1: 1 1 2 4 3

洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes

P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)( 一亿)间的所有回文质数; 输入输出格式 输入格式: 第 1 行: 二个整数 a 和 b . 输出格式: 输出一个回文质数的列表,一行一个. 输入输出样例 输入样例#1: 复制 5 500 输出样例#1: 复制 5 7

洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes【取回文数/数论/字符串】

题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)( 一亿)间的所有回文质数; 输入输出格式 输入格式: 第 1 行: 二个整数 a 和 b . 输出格式: 输出一个回文质数的列表,一行一个. 输入输出样例 输入样例#1: 复制 5 500 输出样例#1: 复制 5 7 11 101 131 151 181 191 313 353 373 383

【USACO 1.2.4】回文平方数

[题目描述] 回文数是指从左向右念和从右向左念都一样的数.如12321就是一个典型的回文数. 给定一个进制B(2<=B<=20,由十进制表示),输出所有的大于等于1小于等于300(十进制下)且它的平方用B进制表示时是回文数的数.用'A','B'--表示10,11等等. [格式] INPUT FORMAT: file (palsquare.in) 共一行,一个单独的整数B(B用十进制表示). OUTPUT FORMAT: file (palsquare.out) 每行两个B进制的符合要求的数字,

52 回文平方数

问题描述 : 回文数是指从左向右念和从右向左念都一样的数.如12321就是一个典型的回文数. 给定一个进制B(2=<B<=20进制),输出所有的大于等于1小于等于300且该数的平方用B进制表示时是回文数的数(该数本身不要求是回文数). 输入说明 : 共一行,一个单独的整数B(B用十进制表示,比如18). 输出说明 : 每行两个数字,第二个数是第一个数的平方,且第二个数是回文数. 注意:输出时,这两个数都应该以B进制表示. 在输出时,数字10到20分别以A到K代替. 输入范例: 20 输出范例:

P1217【洛谷FromUSACO】[USACO1.5]回文质数 Prime Palindromes

直接上题——[传送门:http://www.luogu.org/problem/show?pid=1217] 题目来源USACO,NOCOW翻译,洛谷转载,懂(F_Q)的童鞋们可以去USACO官网逛逛……<!———————————下面是原题—————————————————————————————--> P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数.写一个程

洛谷 P1215 [USACO1.4]母亲的牛奶 Mother&#39;s Milk

题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了.当然每一次灌注都是完全的.由于节约,牛奶不会有丢失. 写一个程序去帮助农民找出当A桶是空的时候,C桶中牛奶所剩量的所有可能性. 输入输出格式 输入格式: 单独的一行包括三个整数A,B和C. 输出格式: 只有一行,升序地列出当A桶是空的时候,C桶牛奶所剩量的所有可能性. 输入输出样例 输入样例#1:

luogu P1217 [USACO1.5]回文质数 Prime Palindromes x

P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)( 一亿)间的所有回文质数; 输入输出格式 输入格式: 第 1 行: 二个整数 a 和 b . 输出格式: 输出一个回文质数的列表,一行一个. 输入输出样例 输入样例#1: 5 500 输出样例#1: 5 7 11 101

[译]最长回文子串(Longest Palindromic Substring) Part II

[译+改]最长回文子串(Longest Palindromic Substring) Part II 问题:给定字符串S,求S中的最长回文子串. 在上一篇,我们给出了4种算法,其中包括一个O(N2)时间O(1)空间的算法(中心检测法),已经很不错了.本篇将讨论一个O(N)时间O(N)空间的算法,即著名的Manacher算法,并详细说明其时间复杂度为何是O(N). 提示 +BIT祝威+悄悄在此留下版了个权的信息说: 先想想有什么办法能改进中心检测法. 考虑一下最坏的情况.★ 最坏的情况就是各个回文