P10732 [NOISG2019 Prelim] Palindromic FizzBuzz

题目传送门

思路:

  1. 输入读取

    • 从标准输入读取两个整数 S 和 E,表示区间的起始和结束。
  2. 回文数判断

    • 定义一个函数 isPalindrome,用于判断一个整数是否是回文数。
    • 将整数转换为字符串。
    • 反转字符串。
    • 比较原字符串和反转后的字符串,如果相同则该整数是回文数。
  3. 遍历区间

    • 使用一个循环遍历从 S 到 E 的所有整数。
    • 对于每个整数,调用 isPalindrome 函数判断是否是回文数。
    • 如果是回文数,输出 "Palindrome!",否则输出该整数本身。
  4. 输出结果

    • 将结果输出到标准输出,每行一个结果。

具体方法:

  • 字符串转换:将整数转换为字符串,便于进行回文判断。
  • 字符串反转:通过字符串反转操作,判断原字符串和反转后的字符串是否相同。
  • 循环遍历:使用循环遍历指定区间内的所有整数,逐一进行回文判断。

注意事项:

  • 由于SE的范围可能非常大(最大到10^18),所以使用long long类型来存储这些值。
  • 题目要求输出E - S + 1行结果,确保循环从SE遍历所有数字。

代码实现:

        C++代码 :

#include <iostream>
#include <string>
#include <algorithm>

// 判断一个整数是否是回文数
bool isPalindrome(long long num) {
    std::string str = std::to_string(num);
    std::string rev_str = str;
    std::reverse(rev_str.begin(), rev_str.end());
    return str == rev_str;
}

int main() {
    long long S, E;
    std::cin >> S >> E;

    for (long long i = S; i <= E; ++i) {
        if (isPalindrome(i)) {
            std::cout << "Palindrome!" << std::endl;
        } else {
            std::cout << i << std::endl;
        }
    }

    return 0;
}
代码解释
  • isPalindrome 函数将整数转换为字符串,反转字符串并比较原字符串和反转后的字符串。
  • main 函数读取输入的 S 和 E,遍历区间 [S, E],对每个数字调用 isPalindrome 函数并输出结果。

        Pascal代码 :

program PalindromicFizzBuzz;
uses sysutils;

function isPalindrome(num: Int64): Boolean;
var
  str, rev_str: string;
  i: Integer;
begin
  str := IntToStr(num);
  rev_str := '';
  for i := Length(str) downto 1 do
    rev_str := rev_str + str[i];
  isPalindrome := str = rev_str;
end;

var
  S, E, i: Int64;
begin
  readln(S, E);
  for i := S to E do
  begin
    if isPalindrome(i) then
      writeln('Palindrome!')
    else
      writeln(i);
  end;
end.

代码解释

  • isPalindrome 函数将整数转换为字符串,反转字符串并比较原字符串和反转后的字符串。
  • 主程序读取输入的 S 和 E,遍历区间 [S, E],对每个数字调用 isPalindrome 函数并输出结果。

        Python代码:

def is_palindrome(num):
    str_num = str(num)
    return str_num == str_num[::-1]

S, E = map(int, input().split())

for i in range(S, E + 1):
    if is_palindrome(i):
        print("Palindrome!")
    else:
        print(i)

代码解释

  • is_palindrome 函数将整数转换为字符串,反转字符串并比较原字符串和反转后的字符串。
  • 读取输入的 S 和 E,遍历区间 [S, E],对每个数字调用 is_palindrome 函数并输出结果。

 希望这些代码能帮助您理解并解决这个问题,如果有问题,请随时提问。

  蒟蒻题解,神犇勿喷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值