PTA天梯赛L1 001-010题目解析

目  录

1.L1-001 Hello World

2.L1-002 打印沙漏

3.L1-003 个位数统计

4.L1-004 计算摄氏温度

5.L1-005 考试座位号

6.L1-006 连续因子

7.L1-007 念数字

8.L1-008 求整数段和

9.L1-009 N个数求和

10.L1-010 比较大小


1.L1-001 Hello World

代码: 

#include<stdio.h>
int main()
{printf("Hello World!");return 0;
}

2.L1-002 打印沙漏

分析:

这题考一点数学归纳的能力,规律总结如下:
我们发现沙漏需要符号的数量为1+3*2+5*2 ......

所以我们得到总的符号数量,可以用循环得出当前这些符号能凑几层沙漏

然后写一个循环打印上层,自增或者自减以下循环变量,然后用这个循环变量再归零打印下层即可

代码: 

#include<iostream>using namespace std;
#define endl "\n"
int n;
char s;int main() {cin>>n>>s;
//	int n=1;int sum=1;int i,j,k;for( i=3;;i+=2){if (sum+i*2>n) break;sum+=i*2;}	i--;int lay=(i+1)/2;
//	上半部分 for (j=lay;j>=1;j--){for( k=0;k<lay-j;k++){cout<<" ";} for(k=1;k<=j*2-1;k++){cout<<s;}cout<<endl;}
//	下半部分for (j=2;j<=lay;j++){for( k=0;k<lay-j;k++){cout<<" ";} for(k=1;k<=j*2-1;k++){cout<<s;}cout<<endl;} cout<<n-sum;return  0;
}

3.L1-003 个位数统计

分析: 

这个题目说(1000位的正整数),按照十进制来表达,正常的数值型数据是处理不了这个数字的

所以我们需要使用【流处理】的思想,使用字符串读取,然后一个一个遍历,边读边使用一种数据结构统计结果,最后按照要求输出该数据结构的信息即可!

代码: 

#include<iostream>using namespace std;string str;
int arr[11];
signed main(){cin>>str;for(int i=0;i<str.size();i++){arr[str[i]-'0']++;}	for(int i=0;i<=9;i++){if (!arr[i]) continue;cout<<i<<":"<<arr[i]<<endl;}return 0;
}

4.L1-004 计算摄氏温度

这个就是将公式转换为代码,不是很难

代码: 

#include<iostream>using namespace std;int f;signed main(){cin>>f;cout<<"Celsius = "<<5*(f-32)/9; return 0;
}

5.L1-005 考试座位号

分析: 

这道题,从特征上来看(一行记录有多种属性,大于等于2),所以我们一定要用到结构体来存储信息。

这题要求是根据试机座位号,来查询自己的其他字段的信息,所以我们需要用到结构体排序

然后按照结构体的试机座位号为权重来进行从小到大的排序,然后排序好之后我们直接使用给出的编号就可以以O(1)的方式进行查询了

代码: 

#include<iostream>
#include<algorithm>
using namespace std;
#define int int long longint n,m;
int nums;
struct sss {int admissionNumber;int tryNumber;int formalNumber;
};struct sss  ttt[1010];
bool cmp(struct sss a,struct sss b){return a.tryNumber<b.tryNumber;
}
signed main(){cin>>n;for(int i=0;i<n;i++){cin>>ttt[i].admissionNumber>>ttt[i].tryNumber>>ttt[i].formalNumber;}cin>>m;sort(ttt,ttt+n,cmp);for(int i=0;i<m;i++){cin>>nums;cout<<ttt[nums-1].admissionNumber<<" "<<ttt[nums-1].formalNumber<<endl;}return 0;
} 

6.L1-006 连续因子

分析: 

这道题题目意思稍微有点不太直观,大意如下:

许多因子相乘组成一个数,你要找出这个数的最长连续(相邻值差1)的因子

然后这里面有一个技巧:一个数n的因子到sqrt(n)就已经终止了,我们枚举到这里即可

所以这道题直接暴力枚举就可以了,中间记得记录长度!

代码: 

#include<iostream>
#include<cmath>
using namespace std;#define int int long long//  这道题的思路本质是暴力枚举
//实质上也需要懂得剪枝去进行枚举
//譬如说 某个数的因子 那么一定就在[2,sqrt(n)]之间 
int n;// 记录答案 
int start=0;
int nums=0;signed main(){cin>>n;for(int i=2;i<=sqrt(n);i++){int currentNum=i;int temp=n;int cnt=0;while(temp%currentNum==0){temp/=currentNum;currentNum++;cnt++;} if (cnt>nums){start=i;nums=cnt;}}if (nums==0){cout<<1<<endl<<n;}else {cout<<nums<<endl;for(int i=start;i<start+nums;i++){if (i-start) cout<<"*"; cout<<i;} }return 0;
}

7.L1-007 念数字

分析: 

题目的意思很好理解:将数字转换为拼音输出。

我的思路是读取数字为字符串,先检查是否数值为负,是的话输出一个fu

然后构建一个数字到拼音的映射字典,遍历这个字符串,直接输出映射的内容。

中间记得进行格式控制

tips:还可以使用个位数取余+栈+字典的方法做.

代码: 

#include<iostream>
#include<map>
#include<algorithm>
#include<string>
#include<string.h>using namespace std;
map<int,string> mymap;string nums;
int startIndex=0; 
bool flag=false;
void init() {mymap[0]="ling";mymap[1]="yi";mymap[2]="er";mymap[3]="san";mymap[4]="si";mymap[5]="wu";mymap[6]="liu";mymap[7]="qi";mymap[8]="ba";mymap[9]="jiu";}
signed main()  {cin>>nums;init();
//	cout<<stoi(nums)<<endl;
//  c++11标准 if (stoi(nums)<0) {cout<<"fu";flag=true;startIndex++;}
//	cout<<startIndex<<" "<<nums.length()<<endl;for (int j=startIndex;j<nums.length();j++){if (j-startIndex || flag) cout<<" ";
//		cout<<nums[j]-'0'<<" "<<mymap[nums[j]-'0']<<"...."<<endl;cout<<mymap[nums[j]-'0'];}return 0;
}

8.L1-008 求整数段和

分析: 

这道题目就是考察对printf格式化输出。我们会使用占位符的语法即可

中间记得控制格式!

代码: 

#include<iostream>
#include<cstdio>
using namespace std;int lefts,rights; 
int coun=0,sum=0;
int i;
signed main() {cin>>lefts>>rights;for ( i=lefts;i<=rights;i++){printf("%5d",i);coun++;if (coun%5==0) cout<<"\n";sum+=i;}if (coun%5!=0) cout<<endl;cout<<"Sum = "<<sum<<endl;return 0;
}

9.L1-009 N个数求和

分析: 

我们知道两个数字相加得到结果是需要通分的,我们用代码实现也可以参考这个过程!

这道题一个比较好的思路如下:

(1)在录入的时候求分母的最小公倍数。

(2)再遍历一遍分子,将分子乘以  最小公倍数对当前分母的倍数

(3)最后将分子加起来,和最小公倍数作比  进行化简

(4)写判断考虑各种题目强调的情况

代码: 

#include<iostream>
#include<algorithm>
#include<cmath> 
using namespace std;
#define int long long int
#define debug(a) cout<<#a<<"="<<a<<endl;int n;
int fz=0,fm=1;int fzs[110],fms[110];
// 存储整数部分 
int sum=0;
signed main() {cin>>n;//  这个循环顺便求fm的最小公倍数 for (int i=0;i<n;i++){scanf("%lld/%lld",&fzs[i],&fms[i]);fm=fm*fms[i]/__gcd(fm,fms[i]);}// 这里获取通分分子for(int i=0;i<n;i++){fz+=fm/fms[i]*fzs[i];} // int nums=__gcd(fz,fm);fz/=nums;fm/=nums;if (fz%fm==0) {cout<<fz/fm;}else if (fz>fm) {cout<<fz/fm<<" "<<fz%fm<<"/"<<fm<<endl;}else {cout<<fz%fm<<"/"<<fm<<endl;}return 0;
}

10.L1-010 比较大小

代码: 

#include<iostream>
#include<algorithm> 
using namespace std;
int arr[10];signed main() {for(int i=0;i<3;i++){cin>>arr[i];}sort(arr,arr+3);for(int i=0;i<3;i++){if (i) cout<<"->";cout<<arr[i];}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/720300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NLP评价指标

一、分类任务常见评估&#xff1a; 准确度(Accuracy) 评估预测正确的比例&#xff0c;精确率(Precision) 评估预测正例的查准率&#xff0c;召回率(Recall) 评估真实正例的查全率。如果是多分类&#xff0c;则每个类别各自求P、R最终求平均值。 TP&#xff08;True Positives…

NLP_新闻主题分类_7(代码示例)

目标 有关新闻主题分类和有关数据.使用浅层网络构建新闻主题分类器的实现过程. 1 案例说明 关于新闻主题分类任务: 以一段新闻报道中的文本描述内容为输入, 使用模型帮助我们判断它最有可能属于哪一种类型的新闻, 这是典型的文本分类问题, 我们这里假定每种类型是互斥的, 即文…

11. Nginx进阶-HTTPS

简介 基本概述 SSL SSL是安全套接层。 主要用于认证用户和服务器&#xff0c;确保数据发送到正确的客户机和服务器上。 SSL可以加密数据&#xff0c;防止数据中途被窃取。 SSL也可以维护数据的完整性&#xff0c;确保数据在传输过程中不被改变。 HTTPS HTTPS就是基于SSL来…

【Unity】Node.js安装与配置环境

引言 我们在使用unity开发的时候&#xff0c;有时候会使用一些辅助工具。 Node.js就是开发中&#xff0c;经常会遇到的一款软件。 1.下载Node.js 下载地址&#xff1a;https://nodejs.org/en 2.安装Node.js ①点击直接点击Next下一步 ②把协议勾上&#xff0c;继续点击…

【lua】lua内存优化记录

这边有一个Unity项目用的tolua&#xff0c; 游戏运行后手机上lua内存占用 基本要到 189M&#xff0c; 之前峰值有200多。 优化点1 加快gc频度&#xff1a; 用uwa抓取的lua内存&#xff0c; 和unity的mono很像&#xff0c;内存会先涨 然后突然gc一下&#xff0c;降下来。 这样…

java数据结构与算法刷题-----LeetCode687. 最长同值路径

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 深度优先&#xff0c;用下面的儿子判断2. 深度优先&#xff0…

UI 自动化测试实战(二)| 测试数据的数据驱动

数据驱动就是通过数据的改变驱动自动化测试的执行&#xff0c;最终引起测试结果的改变。简单来说&#xff0c;就是参数化在自动化测试中的应用。 测试过程中使用数据驱动的优势主要体现在以下几点&#xff1a; 1.提高代码复用率&#xff0c;相同的测试逻辑只需编写一条测试用例…

【01】区块链科普100天-模块化区块链

模块化区块链以其高拓展性的特点成为热点 导言&#xff1a; 模块化区块链通过将不同功能分解为不同的模块&#xff08;层&#xff09;来提高系统的可拓展性、安全性和灵活性 例如Celestia公链&#xff0c;通过将数据可用性与共识分离来提高网络的可拓展性和灵活性 1.层次架构&a…

服务器后端是学习java还是php

没有绝对的"最好"语言&#xff0c;每种后端语言都有其适用的场景和特点。以下是几种常用的后端语言&#xff1a; 1. Java&#xff1a;Java是一种通用且强大的语言&#xff0c;广泛用于企业级应用和大型系统。它有很好的性能和可靠性&#xff0c;并且具有优秀的生态系…

光辐射测量(1)基本介绍+辐射度量、光辐射度量基础

基本情况&#xff1a;本门课就是对“三度学”进行学习。“三度学”包括辐射度学、光度学、色度学。主要掌握其基本概念、原理、物理量的互相转换关系、计算分析方法、测量仪器与测试计量方法等。 三者所覆盖的范围如图。 辐射度学&#xff1a; 辐射度学是一门研究电磁辐射能测…

自测-5 Shuffling Machine(python版本)

文章预览&#xff1a; 题目翻译算法python代码oj反馈结果 题目 翻译 shuffle是用于随机化一副扑克牌的过程。由于标准的洗牌技术被认为是薄弱的&#xff0c;并且为了避免员工通过不适当的洗牌与赌徒合作的“内部工作”&#xff0c;许多赌场使用了自动洗牌机。你的任务是模拟一…

XGB-17:模型截距

在 XGBoost 中&#xff0c;模型截距&#xff08;也称为基本分数&#xff09;是一个值&#xff0c;表示在考虑任何特征之前模型的起始预测。它本质上是处理回归任务时训练数据的平均目标值&#xff0c;或者是分类任务的赔率对数。 在 XGBoost 中&#xff0c;每个叶子节点都会输…

H5小游戏,象棋

H5小游戏源码、JS开发网页小游戏开源源码大合集。无需运行环境&#xff0c;解压后浏览器直接打开。有需要的订阅后&#xff0c;私信本人&#xff0c;发源码&#xff0c;含60小游戏源码。如五子棋、象棋、植物大战僵尸、贪吃蛇、飞机大战、坦克大战、开心消消乐、扑鱼达人、扫雷…

C++:Vector的使用

一、vector的介绍 vector的文档介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以…

ABAP - 增强:一代增强User exit

一代增强是基于源代码的增强&#xff0c;一般是名字UserExit_开头空代码的子例程&#xff0c;所以一代增强的别称用户出口。需要修改SAP标准标准代码集中在名称倒数第二位为’Z‘的include程序里面。所有的全局数据可用那么该如何找到一代增强呢&#xff1f;以销售订单为例&…

《操作系统真相还原》读书笔记一:环境搭建 32位centos6.3+bochs

下载32位的centos6.3centos6.3 https://archive.kernel.org/centos-vault/6.3/isos/i386/

ubuntu22.04 成功编译llvm和clang 3.4.0,及 bitcode 函数名示例,备忘

1, 获取llvm 仓库 从github上获取&#xff1a; $ git clone --recursive https://github.com/llvm/llvm-project.git 2, 检出 llvmorg-3.4.0 tag 针对llvm 3.4.0版本&#xff0c;检出 $ cd llvm-project $ git tag $ git checkout llvmorg-3.4.0 3, 配置并编译llvm 使用 M…

EmoLLM(心理健康大模型)——探索心灵的深海,用智能的语言照亮情感的迷雾。

文章目录 介绍&#xff1a;应用地址&#xff1a;模型地址&#xff1a;Github地址&#xff1a;视频介绍&#xff1a;效果图&#xff1a; 介绍&#xff1a; EmoLLM是一个基于 InternLM 等模型微调的心理健康大模型&#xff0c;它涵盖了认知、情感、行为、社会环境、生理健康、心…

08 OpenCV 腐蚀和膨胀

文章目录 作用算子代码 作用 膨胀与腐蚀是数学形态学在图像处理中最基础的操作。其卷积操作非常简单&#xff0c;对于图像的每个像素&#xff0c;取其一定的邻域&#xff0c;计算最大值/最小值作为新图像对应像素位置的像素值。其中,取最大值就是膨胀&#xff0c;取最小值就是腐…

10 - 安装 image2df

1 背景 在使用 容器镜像 时可能遇到的场景&#xff1a; 我们想要通过已有的镜像来获取 Dockerfile&#xff0c;比如常用的使用 docker history 命令来查看镜像信息&#xff0c;然后分析生成 Dockerfile。但是&#xff0c;这个方法有些缺点&#xff1a;生成的 Dockerfile 少了 F…