PTA,均为素数,字符串转化

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


PTA练习

一、字母串

题目:英语老师要求学生按照如下规则写一串字母:
如果写了某个大写字母,下一个就必须写同个字母的小写,或者写字母表中下一个字母的大写;
如果写了某个小写字母,下一个就必须写同个字母的大写,或者写字母表中前一个字母的小写;
当然也可以什么都不写,就结束这个字母串。
例如 aAaABCDdcbBC 就是一个合法的字母串;而 dEFfeFGhI 就是非法的。注意 a 没有前一个字母, Z 也没有下一个字母。
现在面对全班学生交上来的作业,老师请你写个程序自动批改。

输入测试案例:
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int n;
    scanf("%d",&n);
    char arr[2000001];       //创建符合题目上限的数组
    while(n)
    {
        scanf("%s",arr);
       int sz = strlen(arr);
        getchar();         //吸收回车字符
   //     puts(arr);
        	int i;
         int pd = 0;
        for(i=0;arr[i+1]!='\0';i++)
        {  
            if('A'<=arr[i]&&arr[i]<='Z') {    //输入是大写字母时
              if((arr[i+1]==arr[i]+32)||(arr[i+1]==arr[i]+1)) {
                      continue;
             }  else{
                  pd=1;
                  break;
              }
            }
                if('a'<=arr[i]&&arr[i]<='z')    //输入是小写字母时
                {
                    if(arr[i+1]==arr[i]-32||arr[i+1]==arr[i]-1)
                    {
                       continue;
                    } else {
                        pd=1;
                      break;
                    }
                }
        }
       
       if(pd==1) {
           printf("N\n");
       } else {
           printf("Y\n");
       }
 
        n--;
    }
    return 0;
}

二、英文字母替换加密

本题要求编写程序,将英文字母替换加密。为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。变换规则是:将明文中的所有英文字母替换为字母表中的后一个字母,同时将小写字母转换为大写字母,大写字母转换为小写字母。例如,字母a->B、b->C、…、z->A、A->b、B->c、…、Z->a。输入一行字符,将其中的英文字母按照以上规则转换后输出,其他字符按原样输出。
在这里插入图片描述

#include <stdio.h>
#include <string.h>
int main()
{
    char arr[100];
    gets(arr);
    int i;
    for(i=0;arr[i]!='\0';i++)
    {
        if(arr[i]>='a'&&arr[i]<='z') {
            arr[i]='A'+(arr[i]-'a')+1;     //A+其小写字母到a的距离=其本身大写字母,然后+1
            if(arr[i]>'Z') arr[i] = 'A';
        } else if(arr[i]>='A'&&arr[i]<='Z') {
            arr[i]='a'+(arr[i] - 'A')+1;
            if(arr[i]>'z') arr[i] = 'a';
        } else {
            ;
        }
    }
    puts(arr);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
题目描述中,素数字符串是指将素数从小到大依次书写所得到的字符串。对于问题中的数字d,要求计算素数字符串在区间[L, R之间出现了多少个d。 解决这个问题可以按照以下几个步骤进行: 1. 首先,我们需要生成素数字符串。可以使用一个函数来生成素数,并将素数转化字符串格式。在代码中,可以使用itoa()函数将数字转化字符串。 2. 其次,我们需要使用前缀和的方法来处理生成的素数字符串。前缀和是指在数组中存储到每个位置的累加和。在这个问题中,我们可以使用一个二维数组来存储前缀和。其中第一维表示前几个数,第二维表示0-9这个区间内的数字。 3. 接下来,我们可以通过遍历素数字符串来计算在区间[L, R内每个数字d的出现次数。我们可以使用一个变量cnt来表示当前遍历到的位置,用一个数组qzh来存储前缀和。 4. 最后,我们可以根据cnt的值来判断是否遍历到了区间[R, R的终点,如果遍历到了终点,则可以退出循环。 综上所述,通过以上四个步骤,我们可以计算出素数字符串在区间[L, R之间数字d的出现次数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [xtu oj 1345 素数字符串](https://blog.csdn.net/Danshui_liuhen/article/details/127806616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [XTU1345素数字符串](https://blog.csdn.net/qq_50115621/article/details/127560898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值