首页 > 其他分享 >每日一题 6 回文串问题 遗忘的密码

每日一题 6 回文串问题 遗忘的密码

时间:2024-11-21 09:49:03浏览次数:3  
标签:string int char 密码 字符串 include 回文 遗忘

问题 A 回文串问题

题目描述:

对于一个串 ABCD,规定可以将左边的一个字符移到右边,得到 BCDA,同理再 操作一次,得到 CDAB。现有一个串 AABB,不是回文串, 但只要将左边的一个字符移到右边,就成为了回文串,同理 BAABC,操作两次,成为回文串。问,给定一个串,经过多次这样的操作 是否能成为回文串。能则输出 Y, 否则输出 N 。

输入格式:

全由大写字母构成的一个串,最多不超过 80 个字符(请使用 scanf("%s", ......)读取)。

输出格式:

Y 或 N

 

输入样例:

ABC

输出样例:

N

A 题解

#include<stdio.h>
#include<string.h>

int isPalindrome(char *str,int len)
{
    for(int i=0;i<len/2;i++)
    {
        if(str[i]!=str[len-1-i])
        {
           return 0;
        }
    }
    return 1;
}
//定义一个函数isPlindrome(),用以判断一个字符串是否为回文串

int main(void)
{
    char str[81];
    scanf("%s",str);
    int len=strlen(str);
    for(int i=0;i<len;i++)
    {
        if(isPalindrome(str,len))
        {
            printf("Y");
            return 0;
        }
        else
        {
            char first=str[0];
            for(int j=0;j<len-1;j++)
            {
                str[j]=str[j+1];
            }
            str[len-1]=first;
        }
        //字符串移位
    }
    printf("N");
    return 0;
}

很基础的一题,但要注意细节。

问题 B 遗忘的密码

题目描述:

小明记不清他的密码了,只记得该密码是一个不大于 100000 的质数,同时记得其中的一段连续的数字,请编程帮他找出所有满足条件的数字,有多个时,按由小到大输出。

如果没有满足条件的数字,则输出 N 。

输入格式:

一个数字字符串(为小明记得的其中一段连续的数字)。

输出格式:

一行一个满足条件的数(由小到大输出) 。

 

输入样例:

2343

输出样例:

12343 
22343 
23431

B 题解

C++

#include<iostream>
#include<cmath>
#include<string>
using namespace std;

int isPrime(int n)
{
    for(int i=2;i<=sqrt(n);i++)
    {
        if(n%i==0&&n!=2)
        {
           return 0;
        }
    }
    return 1;
}

int main(void)
{
    int n;
    int found=0;
    string str1;
    cin>>n;
    str1=to_string(n);
    for(int i=2;i<=100000;i++)
    {
        string str2=to_string(i);
        if(str2.find(str1)!=string::npos&&isPrime(i))
        {
            cout<<i<<endl;
            found=1;
        }
    }
    if(!found)
    {
        cout<<"N";
    }
    return 0;
}

C

#include<stdio.h>
#include<math.h>
#include<string.h>

int isPrime(int n)
{
    for(int i=2;i<=sqrt(n);i++)
    {
        if(n%i==0&&n!=2)
        {
           return 0;
        }
    }
    return 1;
}

int main(void)
{
    int n;
    int found=0;
    char str1[100005],str2[100005];
    scanf("%d",&n);
    sprintf(str1,"%d",n);
    for(int i=2;i<=100000;i++)
    {
        sprintf(str2,"%d",i);
        if(strstr(str2,str1)&&isPrime(i))
        {
            printf("%d\n",i);
            found=1;
        }
    }
    if(!found)
    {
        printf("N");
    }
    return 0;
}

将整数转换为C-风格字符串,用sprintf()函数;将整数转换为C++ string类字符串,用to_string()函数。C-风格字符串的查找字符串,用strstr();C++ string类字符串的查找字符串,用str.find()函数。

复习了两种字符串(C-风格字符串和C++ string类字符串)的运用。

附:

sprintf()函数原型

int sprintf(char *buffer, const char *format, ...); 

strstr()函数原型及要点

char *strstr(const char *str1, const char *str2);

函数会在字符串str1中查找是否包含字符串str2,如果找到则返回指向str2在str1中第一次出现位置的指针;如果没有找到,则返回NULL。

find()(主要的)函数原型及要点

size_t find(const string& str, size_t pos = 0) const;

这个版本的find()函数接受两个参数:要查找的子串(str)和起始位置(pos)。如果未指定起始位置,则默认从字符串的开头开始查找。函数返回找到的子串的起始位置的下标,如果未找到则返回std::string::npos,这是一个特殊的标记,表示没有找到子串。

题目来源

A:2023 年华南农业大学程序设计竞赛网上预赛试题(23 级组别),2.回文串问题
B:2023 年华南农业大学程序设计竞赛网上预赛试题(23 级组别),3.遗忘的密码

 

 

标签:string,int,char,密码,字符串,include,回文,遗忘
From: https://blog.csdn.net/xq2024/article/details/143929116

相关文章

  • phpcmsV9 管理员密码丢失或忘记了怎么办
    如果你忘记了PHPcmsV9的后台管理密码,可以通过以下步骤进行重置:备份数据库:在进行任何数据库操作之前,请确保备份当前的数据库,以防止数据丢失。登录数据库:使用数据库管理工具(如phpMyAdmin)登录到你的数据库。找到用户表:寻找名为 v9_admin 的表,这是存储管理员账户......
  • 1024 Palindromic Number(回文串、大数相加)
     本题主要考察大数相加,有注意点:1.使用reverse函数可以快速反转string2.若是常规的大数相加,记得注意两数的长度来控制遍历条件。1#include<bits/stdc++.h>2usingnamespacestd;3stringn;4intk;5boolisPalindromicNumber(stringx){6stringy=x;......
  • 【洛谷】P1914 小书童——凯撒密码
    题目背景某蒟蒻迷上了“小书童”,有一天登陆时忘记密码了(他没绑定邮箱or手机),于是便把问题抛给了神犇你。题目描述蒟蒻虽然忘记密码,但他还记得密码是由一个字符串组成。密码是由原文字符串(由不超过50个小写字母组成)中每个字母向后移动 n 位形成的。z 的下一个字母是 ......
  • 鸿蒙NEXT开发案例:随机密码生成
     【引言】本案例将实现一个随机密码生成器。用户可以自定义密码的长度以及包含的字符类型(大写字母、小写字母、数字、特殊字符),最后通过点击按钮生成密码,并提供一键复制功能。【环境准备】•操作系统:Windows10•开发工具:DevEcoStudioNEXTBeta1BuildVersion:5.0.3.806......
  • 剑指RSA——量子计算Shor算法对经典密码体制的威胁
    摘  要整数分解是数论中一个古老且复杂的问题,当今世界上最著名且广泛使用的RSA公钥密码体制,其安全性依赖于对极大整数进行因数分解的困难性。经典计算机在分解极大整数时所需的时间成本与信息价值不成正比,这使得RSA算法的安全性得以维持。然而,随着量子计算的迅猛发展,传统......
  • xdoj494 回文数整除问题
    题目:回文数整除问题问题描述一个五位回文数(从左到右与从右到左读出的数相同),M为大于1的整数,那么五位回文数中能被M整除的有多少个?输入格式输入一个整数M。输出格式输出两个整数,M和能被整除五位回文数的个数,用空格隔开。样例输入13样例输出1369样例说明......
  • 字节青训-小C的类二进制拼图、小M的奶酪问题、小T的密码变换规则、数值操作的期望计算
    目录一、小C的类二进制拼图问题描述测试样例解题思路:问题理解数据结构选择算法步骤第一版代码:最终代码:  二、小M的奶酪问题问题描述测试样例解题思路:问题理解数据结构选择算法步骤 最终代码:运行结果: 三、小T的密码变换规则问题描述测试样例 解题......
  • 7-14 判断回文字符串
    输入一个字符串,判断该字符串是否为回文。回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。输入格式:输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。输出格式:输出在第1行中输出字符串。如果它是回文字符串,在第2行中输出Yes,否则输出No......
  • LCR 020. 回文子串(中等)(主站647)
    https://leetcode.cn/problems/a7VOhD/https://leetcode.cn/problems/palindromic-substrings/难度:☆☆☆题目:给定一个字符串s,请计算这个字符串中有多少个回文子字符串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例:输入:s......
  • 力扣刷题--027.回文链表
    想放弃吗?,那当初为什么要开始?题目描述给定一个链表的头节点head,请判断其是否为回文链表。如果一个链表是回文,那么链表节点序列从前往后看和从后往前看是相同的。示例1:输入:head=[1,2,3,3,2,1]输出:true示例2:输入:head=[1,2]输出:false思路分析如......