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

PTA:L1-025 正整数A+B、L1-026 I Love GPLT、L1-027 出租(C++)

目录

L1-025 正整数A+B

问题描述:

实现代码:

L1-026 I Love GPLT

问题描述:

实现代码:

L1-027 出租

问题描述:

实现代码:

原理思路:


        出租那道题有点意思哈

L1-025 正整数A+B

问题描述:

        题的目标很简单,就是求两个正整数AB的和,其中AB都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。

输入格式:

输入在一行给出AB,其间以空格分开。问题是AB不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。

注意:我们把输入中出现的第1个空格认为是AB的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。

输出格式:

如果输入的确是两个正整数,则按格式A + B = 和输出。如果某个输入不合要求,则在相应位置输出?,显然此时和也是?

输入样例1:

123 456

输出样例1:

123 + 456 = 579

输入样例2:

22. 18

输出样例2:

? + 18 = ?

输入样例3:

-100 blabla bla...33

输出样例3:

? + ? = ?

实现代码:

#include <iostream>
#include <string>using namespace std;int main()
{string a, b;cin >> a;getchar();getline(cin, b);for (int i = 0; i < a.size(); i++){if (!isdigit(a[i]) || stoi(a) < 1 || stoi(a) > 1000){a = "?";break;}}for (int i = 0; i < b.size(); i++){if (!isdigit(a[i]) || stoi(b) < 1 || stoi(b) > 1000){b = "?";break;}}if (a == "?" || b == "?"){cout << a << " + " << b << " = ?";}else{cout << a << " + " << b << " = " << stoi(a) + stoi(b);}return 0;
}

L1-026 I Love GPLT

问题描述:

        这道超级简单的题目没有任何输入。

你只需要把这句很重要的话 —— “I Love GPLT”——竖着输出就可以了。

所谓“竖着输出”,是指每个字符占一行(包括空格),即每行只能有1个字符和回车。

输入样例:

输出样例:

IL
o
v
eG
P
L
T

实现代码:

#include <iostream>
#include <string>using namespace std;int main()
{string s = "I Love GPLT";for (int i = 0; i < s.size(); i++){cout << s[i] << endl;}
}

L1-027 出租

问题描述:

        下面是新浪微博上曾经很火的一张图:

一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1index[1]=0 对应 arr[0]=8index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100

本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。

输入格式:

输入在一行中给出一个由11位数字组成的手机号码。

输出格式:

为输入的号码生成代码的前两行,其中arr中的数字必须按递减顺序给出。

输入样例:

18013820100

输出样例:

int[] arr = new int[]{8,3,2,1,0};
int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4};

实现代码:

#include <iostream>
#include<map>
using namespace std;map<int, int,greater<int>> m;// <数字,下标>,降序int main()
{int nums[11];long long int ph;cin >> ph;int count = 10;int index[11]; //index数组while (ph){int t = ph % 10;nums[count--] = t;//每个数字记录下来m.insert({ t, 0 });ph /= 10;}//给号码附上编号int idx = 0;for (auto& t : m){t.second = idx;idx++;}//求index数组//for (int i = 0; i < 11; i++)//{//    index[i] = m[nums[i]];//}//输出,注意控制输出格式cout << "int[] arr = new int[]{";int flag = 0;for (auto t : m){if (flag == 0){cout << t.first;flag = 1;}else{cout <<','<< t.first;}}cout << "};" << endl;cout << "int[] index = new int[]{";int flag2 = 0;for (int i = 0; i < 11; i++){if (flag2 == 0){cout << m[nums[i]];flag2 = 1;}else{cout << ',' << m[nums[i]];}}cout << "};" << endl;
}

原理思路:

        用map<int ,int> 来存数字<数字,下标>,达到去重的效果,用sums数组存电话号码,然后遍历,给second赋上idx编号,最后输出map以及电话号的索引下标(按格式)、

        记得用auto的话,带上 &,我就没加,结果找半天错误。。。

http://www.lryc.cn/news/34771.html

相关文章:

  • 状态机的Go语言实现版本
  • 第2章 线程安全与共享资源竞争
  • 77. writerows写入多行
  • STM32MP157-Linux输入设备应用编程-多点触摸屏编程
  • mybatis-plus的一般实现过程(超详细)
  • Spark(5):RDD概述
  • 面向对象 - 继承
  • 计算机网络的166个概念你知道几个 第十二部分
  • 【RabbitMQ】RabbitMQ各版本的兼容性与技术支持时限
  • 【Git】P5 Git 远程仓库(3)pull 发生冲突
  • 关于世界坐标系,相机坐标系,图像坐标系,像素坐标系的一些理解
  • 企业防护ddos的注意事项,你知道吗?
  • RocketMQ如何测试
  • SpringBoot中的bean注入方式和原理介绍
  • ESP32设备驱动-RFID-RC522模块驱动
  • SMETA认证有些客户是需要做窗口期的
  • 面向对象设计模式:创建型模式之原型模式
  • 三维重建(单目、双目、多目、点云、SFM、SLAM)
  • Java中的final和权限修饰符
  • MySQL的基本语句(SELECT型)
  • 日志服务搭建-ES-FileBeat-Kibana
  • 大数据架构设计与数据计算流程
  • 207. 课程表
  • 2023-03-08 mysql列存储数据库-查询执行过程分析
  • 各种激活函数的计算公式、图像以及实现代码
  • ArangoDB
  • MySQL8.0Linux安装及主从的搭建
  • 苹果新专利实现无线技术传输睡眠数据,蓝牙在智能家居中的应用
  • 银行数字化转型导师坚鹏:数字化转型为什么需要致良知与知行合一
  • Web前端学习:章三 -- JavaScript预热(二)