首页 > 其他分享 >[USACO1.2] 回文平方数 Palindromic Squares 题目解析

[USACO1.2] 回文平方数 Palindromic Squares 题目解析

时间:2024-10-29 18:19:34浏览次数:3  
标签:USACO1.2 10 平方 Palindromic int 300 v1 Squares 回文

洛谷P1206 [USACO1.2] 回文平方数 Palindromic Squares 题目解析

题目描述

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

给定一个用十进制表示的正整数 B B B,输出所有 [ 1 , 300 ] [1,300] [1,300] 中,它的平方用 B B B 进制表示时是回文数的数。

输入格式

共一行,一个单独的正整数 B B B。

输出格式

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

注意大于 9 9 9 的数,用字母表示。如用 A 表示 10 10 10,B 表示 11 11 11,用第 n n n 个大写字母表示 n + 9 n+9 n+9。

样例 #1

样例输入 #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

提示

【数据范围】
对于 100 % 100\% 100% 的数据, 2 ≤ B ≤ 20 2 \le B \le 20 2≤B≤20

题目翻译来自NOCOW。

USACO Training Section 1.2


解析

认真读题!认真读题!认真读题!重要的事情说三遍。

一道模拟题,解决步骤如下:

  1. 转换数字到制定的进制:定义函数,将数字转换为 B B B 进制,在代码中该函数为 z h u a n ( ) , z h u a n 1 ( ) zhuan(),zhuan1() zhuan(),zhuan1()。

  2. 判断回文:定义一个函数,检查是否是回文,在代码中该函数为 h u i w e ( ) huiwe() huiwe()。

  3. 遍历 1 1 1 到 300 300 300:对每个数字,计算其平方,并将该数及其平方转换为 B B B 进制,检查平方是否是回文,如果是,则输出这个数及其平方(注意都是 B B B 进制下的数值,开始因为这个错了 _)。

代码如下:

#include<bits/stdc++.h>
using namespace std;

int b;
vector<int> v;
vector<int> v1;

void zhuan(int n) {
    while(n) {
        v.push_back(n%b);
        n=n/b;
    }
}

void zhuan1(int n) {
    while(n) {
        v1.push_back(n%b);
        n=n/b;
    }
}

bool huiwen(int n) {  //判断回文
    for(int i=0;i<v.size();i++) {
        if(v[i]!=v[v.size()-i-1]) return false;
    }
    return true;
}

int main() {
    cin>>b;
    for(int i=1;i<=300;i++) {
        v.clear(); v1.clear();
        int k=i*i;
        zhuan(k); zhuan1(i);
        if(huiwen(k)) {
            for(int j=v1.size()-1;j>=0;j--) {
                if(v1[j]>=10) {
                    cout<<char(v1[j]%10+65); //输出,注意大于 10 进制时的处理
                } else {
                    cout<<v1[j];
                }
            }
            cout<<" ";
            for(int j=0;j<v.size();j++) {
                if(v[j]>=10) {
                    cout<<char(v[j]%10+65);
                } else {
                    cout<<v[j];
                }
            }
            cout<<endl;
        }        
    }
    return 0;
}

标签:USACO1.2,10,平方,Palindromic,int,300,v1,Squares,回文
From: https://blog.csdn.net/iuiujk/article/details/143169784

相关文章

  • [USACO1.2] 方块转换 Transformations 题目解析
    洛谷P1205[USACO1.2]方块转换Transformations题目解析题目描述一块n×nn\timesnn×n正方形的黑白瓦......
  • P2730 [USACO3.2] 魔板 Magic Squares
    [USACO3.2]魔板MagicSquares题目背景在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板。这是一张有888个大小相同的格子的魔板:......
  • 第五题:最长回文子串(Longest Palindromic Substring)
    题目描述:给定一个字符串 s,找到 s 中最长的回文子串。示例:输入:s="babad"输出:"bab" 或 "aba"输入:s="cbbd"输出:"bb"要求: 你需要找出 s 中的最长回文子串。解题思路方法1:中心扩展法回文字符串的特点是对称的,因此我们可以从每个字符(或字符间隙)作为中心,向两......
  • LeetCode | 977 SquaresOfASortedArray
    https://github.com/dolphinmind/datastructure/tree/datastructure-array主类packagecom.github.dolphinmind.array.binarysearch;/***@authordolphinmind*@ClassNameSquaresOfASortedArray*@description977.有序数组的平方*分析:有移除元素{......
  • 题解:[ABC363D] Palindromic Number
    提示特定位数的回文数数量是可以快速计算出来的,对于特定的位数\(n\),第一位由于不能有前导\(0\),共有\(9\)种选择,而从第\(2\)位到第\(\frac{n+1}{2}\)位都有\(10\)种选择(一个回文数完全由它的前半部分确定)。所以\(n\)位数中共有\(S(n)=9*10^\frac{n-1}{2}......
  • 【逆运动学2】damped least squares method阻尼最小二乘法
    逆运动学 逆运动学,就是从操作空间的endeffectorpositionandorientation,求关节空间的jointposition的问题。在之前的文章,我们简单提到求逆运动学解的解析解法和优化解法,详细讲解了用逆瞬时(或说微分)运动学即雅可比矩阵法迭代求解逆运动学的方法。这篇文章我们继续讲雅可比矩......
  • ABC 363 F - Palindromic Expression 题解
    下文中提到的数字都不包含0,注意把含0的数字特判掉。反转指各个数位倒过来,比如114514反转过后就是415411。注意到,答案一定是这样:数列\(a\)的各个数字相乘,乘以一个回文,再把数列\(a\)倒过来,每个数反转,再相乘。比如:2*57*184481*75*2,其中的数列\(a\)就是:257,中间的回文......
  • 题解:CodeForces 835 D Palindromic characteristics[区间dp/马拉车Manacher]
    CodeForces835DD.Palindromiccharacteristicstimelimitpertest:3secondsmemorylimitpertest:256megabytes*inputstandardinputoutputstandardoutputPalindromiccharacteristicsofstring\(s\)withlength\(|s|\)isasequenceof\(|s|\)in......
  • 题解:P10732 [NOISG2019 Prelim] Palindromic FizzBuzz
    题解:P10732[NOISG2019Prelim]PalindromicFizzBuzz题意题意十分明了,给予你一个区间,判断区间中每一个数是否是回文数。思路思路比较简单,首先将每一个数按每一位放入一个数组中,顺序无论由前到后和由后到前都可以。接下来将数组折半循环,判断前后是否一样。一样的话是回文数,......
  • R语言实现偏最小二乘回归法 partial least squares (PLS)回归
    原文链接:http://tecdat.cn/?p=8652原文出处:拓端数据部落公众号 偏最小二乘回归是一种回归形式。 当使用pls时,新的线性组合有助于解释模型中的自变量和因变量。在本文中,我们将使用pls预测“收入” 。   rlibrary(Ecdat)  ##'data.frame':753obs.......