当前位置: 首页 > news >正文

SCAU高程进阶题(自用)

18711 字符串去重

Description
一个完全由小写字母组成的长度为n的字符串,现在要求你去除所有重复的字母,并将剩下的字母按从小到大的次序输出。
如输入baaadccaab,输出abcd。

输入格式
第一行一个整数n,表示字符串长度(0<=n<=100000)。
第二行一个字符串。

输出格式
去除所有重复的字母,并将剩下的字母按ASCII码从小到大的次序输出。

输入样例
10
baaadccaab

输出样例
abcd

#include <stdio.h>
#include <string.h>int main()
{int n;scanf("%d",&n);char ch[n],ans[26];//getchar()和gets(s)连用,为了消除前一个输入的回车导致gets(s)无法输入的问题getchar();gets(ch);long len = strlen(ch);for(int i=0;i<len;i++){ans[ch[i]-'a']=ch[i];}for(int i=0;i<len;i++){if(ans[i]!='\0')printf("%c",ans[i]);}return 0;
}

18410 最后一张纸片


有N张(N不超过1000)纸片,每张纸片上有一个数字从1至N,最初N张纸片按由大到小顺序叠放(编号最大的在最下面),现在不断重复执行如下操作:
(1)将最上面的一张放到最下面;
(2)再将最上面的一张放到最下面;
(3)将当前最上面的一张拿走;
重复上面操作(1)(2)(3)(1)(2)(3)(1)......
直到剩下最后一张纸片,输出该纸片上的编号
输入格式
一个正整数N
输出格式
剩下的最后一张纸片编号
输入样例
3
输出样例
2
提示:N=3时,每列表示一次操作后的纸片排列情况
1 2 3 1 2 1 2
2 3 1 2 1 2
3 1 2
 

#include <stdio.h>
#include <string.h>int main()
{int n;scanf("%d",&n);int arr[n],s=n;//倒序输入for(int i=0;i<n;i++){arr[i]=s;s--;}//每次遍历都将要抽出的那一张放到数组的末尾//最终剩下的那一张就是数组第一个元素for(int i=n-1;i>0;i--){//先把第一个放到最后for(int j=i;j>0;j--){int temp=arr[j];arr[j]=arr[j-1];arr[j-1]=temp;}//再把第二个放到最后(重复上述代码)for(int j=i;j>0;j--){int temp=arr[j];arr[j]=arr[j-1];arr[j-1]=temp;}//将最上面那一张拿走arr[i]='\0';}printf("%d",arr[0]);return 0;
}

不要bad

Description
由键盘输入一行字符(最多不超过80个字符,以回车结束),要求编程实现删除该行字符中的“bad”(小写),输出处理后的结果(结果不含bad)。

输入格式
一行字符

输出格式
不含“bad”的结果

输入样例
abadnewsisgoodnews,andbadisnotBad

输出样例
anewsisgoodnews,andisnotBad
注意特殊情况例如:ababadde

#include <stdio.h>
#include <string.h>int main()
{char ch[81];gets(ch);int len=strlen(ch);for(int i=0;i<len-3;i++){//将bad位置置为空if(ch[i]=='b' && ch[i+1]=='a' && ch[i+2]=='d'){ch[i]='\0';ch[i+1]='\0';ch[i+2]='\0';//将后续元素向前补齐for(int j=0;i+j+3<len;j++){ch[i+j]=ch[i+3+j];ch[i+3+j]='\0';}//从头检测i=-1;}}for(int i=0;i<len;i++){printf("%c",ch[i]);}return 0;
}

分解质因数

读入一个数n,输出1到n所有数分解成质因数之积的形式,格式见参考样式

Such us: n=10;

输出:

1=1

2=2

3=3

4=2*2

5=5

6=2*3

7=7

8=2*2*2

9=3*3

10=2*5

一个数除以从2开始的循环,如果==1,结束,!=1,继续循环

#include <stdio.h>int main()
{int n;scanf("%d",&n);printf("1=1\n");for(int i=2;i<=n;i++){printf("%d=",i);int k=i;for(int j=2;j<=n;j++){int flag=0;if(k%j==0){printf("%d",j);k/=j;flag=1;j=1;}if(k==1){break;}else if(flag==1){printf("*");}}printf("\n");}return 0;
}


http://www.mrgr.cn/news/81924.html

相关文章:

  • 十个Scala的小知识
  • 28. 二叉树遍历
  • UnityRenderStreaming使用记录(三)
  • 如何在Java中识别和处理AJAX请求:全面解析与实战案例
  • 设计模式の状态策略责任链模式
  • 并发编程系列(四) -volatile关键字介绍
  • 谷云科技数据集成社区焕新登场:功能、资源、会员权益全面升级
  • Metricbeat安装教程——Linux——Metricbeat监控ES集群
  • ensp、HCL环境部署vm版
  • RCCL/NCCL中的Transports方式选择:P2P or SHM or NET
  • java开发配置文件集合
  • 【数据结构】Trie字典树(前缀树)— 数组实现
  • 为什么选择 RAG 技术?开启 AI 2.0 应用开发的新时代
  • 【bluedroid】A2dp Source播放流程源码分析(4)
  • 隧道FM广播信号、隧道内调频广播信号覆盖方案选择
  • elasticsearch-java客户端jar包中各模块的应用梳理
  • 一文大白话讲清楚CSS盒子和盒子模型
  • 鸿蒙TCPSocket通信模拟智能家居模拟案例
  • python初学练习之基于文件操作的停车管理系统
  • 19.springcloud_openfeign之案例
  • Snowflake基础知识
  • WPF 绘制过顶点的圆滑曲线 (样条,贝塞尔)
  • Qt之QtConcurrent
  • 【服务器项目部署】⭐️将本地项目部署到服务器!
  • 数仓建模:如何进行实体建模?
  • 大模型在自动驾驶领域的应用和存在的问题