GPLT练习集L1 25--32

  • L1-025 正整数A+B (15 分)
    • 题目描述
    • 代码
      • 说明:
  • L1-026 I Love GPLT (5 分)
    • 题目描述
    • 代码
  • L1-027 出租 (20 分)
    • 题目描述
    • 代码
      • 利用循环遍历处理
      • 利用find()函数处理
      • 说明:
  • L1-028 判断素数 (10 分)
    • 题目描述
    • 代码
  • L1-029 是不是太胖了 (5 分)
    • 题目描述
    • 代码
  • L1-030 一帮一 (15 分)
    • 题目描述
    • 代码
  • L1-031 到底是不是太胖了 (10 分)
    • 题目描述
    • 代码
  • L1-032 Left-pad (20 分)
    • 题目描述
    • 代码
      • 说明

L1-025 正整数A+B (15 分)

题目描述

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

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

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

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

输入样例1:
123 456
*结尾无空行*输出样例1:
123 + 456 = 579
*结尾无空行*输入样例2:
22. 18输出样例2:
? + 18 = ?输入样例3:
-100 blabla bla...33输出样例3:
? + ? = ?

代码

#include <bits/stdc++.h>
using namespace std;
string s1,s2;
int sum,j,k;
void judge(string s) {sum = j = 0;for(int i = 0 ; i < s.length() ; ++i)if(!(isdigit(s[i])))j = 1;//开关if(j)cout<<"?";else {sum = stoi(s);if(sum <= 1000 && sum >= 1) {cout<<s;++k;//开关}elsecout<<"?";}
}
int main() {cin >> s1;getchar();//吃空格getline(cin,s2);judge(s1);int sum1 = sum , j1 = j;cout<<" + ";judge(s2);int sum2 = sum , j2 = j;cout<<" = ";if(!j1 && !j2 && k == 2)cout<<sum1 + sum2;elsecout<<"?";return 0;
}

说明:

  1. 由于存在缓存区问题,就需要getchar()清除缓存区的空格由于存在缓存区问题,就需要getchar()清除缓存区的空格由于存在缓存区问题,就需要getchar()清除缓存区的空格
  2. string类有一个stoi()函数,将(整数)数字字符串转化为整型(c++11标准)string类有一个stoi()函数,将(整数)数字字符串转化为整型(c++11标准)string类有一个stoi()函数,将(整数)数字字符串转化为整型(c++11标准)
  3. 利用"开关"作为标识符来处理判断的临界条件利用"开关"作为标识符来处理判断的临界条件利用"开关"作为标识符来处理判断的临界条件
  4. 测试点5为上限1000;测试点6为下限为1:当k为2时,即当且仅当两个字符串都符合条件才能相加测试点5为上限1000;测试点6为下限为1:当k为2时,即当且仅当两个字符串都符合条件才能相加测试点5为上限1000;测试点6为下限为1:当k为2时,即当且仅当两个字符串都符合条件才能相加

L1-026 I Love GPLT (5 分)

题目描述

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

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

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

输入样例:
无
*结尾无空行*输出样例:
IL
o
v
eG
P
L
T
*结尾无空行*

代码

#include <iostream>
using namespace std;int main() {char str[50]={"I Love GPLT"};for(int i=0 ; i<11; i++)cout<<str[i]<<endl;return 0;
}

L1-027 出租 (20 分)

题目描述

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

一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对应 arr[0]=8,index[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 <bits/stdc++.h>
using namespace std;string s;
int num[10],l,p[50];
int main() {cin >> s;cout << "int[] arr = new int[]{";for(int i = 0 ; i < s.length() ; ++i)num[s[i] - '0'] = 1;//计数,其下标就是字符串无重复的数字for(int i = 9 ; i >= 0 ;--i)if(num[i]) {if(!l) cout << i;else   cout << "," << i;p[l++]= i;//将这些数字提取出来.使得下标从0开始}cout << "};\n" << "int[] index = new int[]{";for(int i = 0 ; i < s.length() ;++i)for(int j = 0 ; j < l ; ++j)if(p[j] == s[i]-'0') {if(i == s.length()-1) cout << j << "};\n";else                  cout << j << ",";break;}return 0;
}

利用find()函数处理

#include <bits/stdc++.h>
using namespace std;string s;
//string m;
int num[10],l;
map<int ,int> m;
int main() {cin >> s;cout << "int[] arr = new int[]{";for(int i = 0 ; i < s.length() ; ++i)num[s[i]-'0'] = 1; //计数,其下标就是字符串无重复的数字for(int i = 9 ; i >= 0 ;--i)if(num[i]) {if(!l)  cout << i;else    cout << "," << i;m.insert(make_pair(i,l++)); //将这些数字提取出来.使得下标从0开始/*m += i + '0';l++;*/}cout << "};\n" << "int[] index = new int[]{";for(int i = 0 ; i < s.length() ;++i) {auto it = m.find(s[i]-'0');//auto it = m.find(s[i]);if(i == s.length()-1) cout << it->second << "};\n";else                  cout << it->second << ",";/*if(i == s.length()-1) cout << it << "};\n";else                  cout << it << ",";*/}return 0;
}

说明:

本题的整体思路就是:本题的整体思路就是:本题的整体思路就是:

  1. 先利用一个计数数组num[]来存储字符串的无重复的数字,这时已经是按照一定的顺序排列先利用一个计数数组num[]来存储字符串的无重复的数字,这时已经是按照一定的顺序排列先利用一个计数数组num[]来存储字符串的无重复的数字,这时已经是按照一定的顺序排列

  2. 虽然是按照一定的顺序排列,但不是从0开始,此时可用数组,vector,map,set等来存储虽然是按照一定的顺序排列,但不是从0开始,此时可用数组,vector,map,set等来存储虽然是按照一定的顺序排列,但不是从0开始,此时可用数组,vector,map,set等来存储

  3. 然后就是遍历判断,其有两种方法:然后就是遍历判断,其有两种方法:然后就是遍历判断,其有两种方法:
    ①利用循环最终存储的容器,遍历其每一元素①利用循环最终存储的容器,遍历其每一元素①利用循环最终存储的容器,遍历其每一元素
    ②利用find()函数查找,复杂度低②利用find()函数查找,复杂度低②利用find()函数查找,复杂度低

  4. 简单说明一下map容器:简单说明一下map容器:简单说明一下map容器:
    ①它属于关联式容器,包含“关键字/值”对,其一一对应①它属于关联式容器,包含“关键字/值”对,其一一对应①它属于关联式容器,包含“关键字/值”对,其一一对应
    ②它输出必须利用迭代器输出②它输出必须利用迭代器输出②它输出必须利用迭代器输出

  5. 判断","号的位置可以根据其遍历的变量的大小来判断判断","号的位置可以根据其遍历的变量的大小来判断判断","号的位置可以根据其遍历的变量的大小来判断

L1-028 判断素数 (10 分)

题目描述

本题的目标很简单,就是判断一个给定的正整数是否素数。

输入格式:
输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于2 ^31 的需要判断的正整数。

输出格式:
对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No

输入样例:
2
11
111输出样例:
Yes
No

代码

#include <bits/stdc++.h>int isprime(long long n) {//长长整型if(n < 2 )return 0;elsefor( long long i = 2 ; i*i <= n ; i++ )if(n%i == 0)return 0;return 1;
}
int main() {int n;scanf("%d",&n);while(n--) {long long num;scanf("%lld",&num);if(isprime(num))printf("Yes\n");elseprintf("No\n");}return 0;
}

L1-029 是不是太胖了 (5 分)

题目描述

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)

输入格式:
输入第一行给出一个正整数H(100 < H ≤ 300),为某人身高。

输出格式:
在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。

输入样例:
169输出样例:
124.2

代码

#include <stdio.h>
#include <iostream>
using namespace std;int main () {double h;cin>>h;printf("%.1lf",(h-100)*1.8);return 0;
}

L1-030 一帮一 (15 分)

题目描述

"一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。

输入格式:
输入第一行给出正偶数N(≤50),即全班学生的人数。此后N行,按照名次从高到低的顺序给出每个学生的性别(0代表女生,1代表男生)和姓名
(不超过8个英文字母的非空字符串),其间以1个空格分隔。这里保证本班男女比例是1:1,并且没有并列名次。

输出格式:
每行输出一组两个学生的姓名,其间以1个空格分隔。名次高的学生在前,名次低的学生在后。小组的输出顺序按照前面学生的名次从高到低排列。

输入样例:
8
0 Amy
1 Tom
1 Bill
0 Cindy
0 Maya
1 John
1 Jack
0 Linda输出样例:
Amy Jack
Tom Linda
Bill Maya
Cindy John

代码

#include <bits/stdc++.h>
using namespace std;const int MAX = 100;
int num[MAX],f[MAX],n;
//利用数组的下标定位,用f[]数组表示是否已经被帮助
string s[MAX];
int main () {cin >> n;for(int i=0 ; i<n ; i++)cin>>num[i]>>s[i];for(int i=0 ; i<n/2 ; i++)for(int j=n-1 ; j>=n/2 ; j--)if(num[i]!=num[j] && f[j]==0) {cout<<s[i]<<" "<<s[j]<<endl;f[j]=1;break;}return 0;
}

L1-031 到底是不是太胖了 (10 分)

题目描述

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。

输入格式:
输入第一行给出一个正整数N(≤ 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 < H < 200;单位:厘米)和真实体重W(50 < W ≤ 300;单位:市斤),其间以空格分隔。

输出格式:
为每个人输出一行结论:如果是完美身材,输出You are wan mei!;如果太胖了,输出You are tai pang le!;否则输出You are tai shou le!。

输入样例:
3
169 136
150 81
178 155输出样例:
You are wan mei!
You are tai shou le!
You are tai pang le!

代码

#include <bits/stdc++.h>
using namespace std;int main() {int n;cin >> n;while(n--) {int h , w ;cin >> h >> w;double ave = (h - 100) * 1.8;if(fabs(w - ave) < ave * 0.1)cout << "You are wan mei!" << endl;else if(w > ave)cout << "You are tai pang le!" << endl;elsecout << "You are tai shou le!" << endl;}return 0;
}

L1-032 Left-pad (20 分)

题目描述

根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的React/Babel干瘫痪了。这是个什么样的模块?就是在字符串前填充一些东西到一定的长度。例如用去填充字符串GPLT,使之长度为10,调用left-pad的结果就应该是*****GPLT。Node社区曾经对left-pad紧急发布了一个替代,被严重吐槽。下面就请你来实现一下这个模块.

输入格式:
输入在第一行给出一个正整数N(≤10 ^4)和一个字符,分别是填充结果字符串的长度和用于填充的字符,中间以1个空格分开。第二行给出原始
的非空字符串,以回车结束。

输出格式:
在一行中输出结果字符串。

输入样例1:
15 _
I love GPLT输出样例1:
____I love GPLT输入样例2:
4 *
this is a sample for cut输出样例2:cut

代码

#include <bits/stdc++.h>
using namespace std;int n;
char ch;
string s;
int main() {cin >> n >> ch;getchar();getline(cin , s);s.length() < n ? cout<<setw(n)<<setfill(ch)<<s :cout << s.substr(s.length()-n);return 0;
}

说明

本题的思路就是本题的思路就是本题的思路就是

  1. n>=s.length(),求其子列求其子列求其子列s.substr(s.length()-n)
  2. n<s.length()补齐补齐补齐,cout<<setw(n)<<setfill(ch)<<s
  3. 补齐的方法就是利用setw()和setfill()函数结合补齐的方法就是利用setw()和setfill()函数结合补齐的方法就是利用setw()和setfill()函数结合
  4. 它们两个函数都在它们两个函数都在它们两个函数都在#include<iomanip>库里,并且都是只有在输出时起作用,即只能与<<结合库里,并且都是只有在输出时起作用,即只能与<<结合库里,并且都是只有在输出时起作用,即只能与<<结合
  5. setw(int n)//n为整数:控制输出间隔,默认填充空格:控制输出间隔,默认填充空格:控制输出间隔,默认填充空格
  6. setfill(char ch)//ch为单个字符:填充字符:填充字符:填充字符
  7. 它们只对后一个输出有效,下一个无效,如:它们只对后一个输出有效,下一个无效,如:它们只对后一个输出有效,下一个无效,如:stew(5)<<setfill('*')<<a<<b对a有效,对b无效对a有效,对b无效对a有效,对b无效
  8. 详细说明:详细说明:详细说明:setw()和setfill()函数的详细说明
  9. setfill()跟上setw()函数才有输出结果;setfill()跟上setw()函数才有输出结果;setfill()跟上setw()函数才有输出结果;
    setw()可不跟setfill()一起用;setw()可不跟setfill()一起用;setw()可不跟setfill()一起用;
    setw()只能一次有效,setfill则永久有效,直到遇到下一个setfill();setw()只能一次有效,setfill则永久有效,直到遇到下一个setfill();setw()只能一次有效,setfill则永久有效,直到遇到下一个setfill();

GPLT练习集L1 25--32相关推荐

  1. GPLT练习集L1 33--40

    GPLT练习集L1 33--40 L1-033 出生年 (15 分) 题目描述 代码 说明 L1-034 点赞 (20 分) 题目描述 代码 L1-035 情人节 (15 分) 题目描述 代码 L1- ...

  2. GPLT练习集 L1 57--64

    GPLT练习集 L1 57--64 L1-057 PTA使我精神焕发 (5 分) 题目描述 代码 L1-058 6翻了 (15 分) 题目描述 代码 c语言版 说明 c++版 说明 L1-059 敲笨 ...

  3. 【CCCC】PAT : 团体程序设计天梯赛-练习集 L1 答案

    [CCCC]PAT : 团体程序设计天梯赛-练习集 L1 答案 鉴定完毕,全部水题 ヾ(•ω•`)o 标号 标题 分数 通过数 提交数 通过率 L1-001 Hello World 5 46779 1 ...

  4. 团体程序设计天梯赛 -- 练习集 (L1合集)

    文章目录 L1-001 Hello World (5 分) L1-002 打印沙漏 (20 分) L1-003 个位数统计 (15 分) L1-004 计算摄氏温度 (5 分) L1-005 考试座位 ...

  5. 团体程序设计天梯赛-练习集 L1

    目录 L1-001 Hello World L1-002 打印沙漏 L1-003 个位数统计 L1-004 计算摄氏温度 L1-005 考试座位号 L1-006 连续因子[枚举] L1-007 念数字 ...

  6. 团体程序设计天梯赛-练习集 L1合集

    来自<https://www.patest.cn/contests/gplt> L1-001. Hello World 这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句&qu ...

  7. PAT : 团体程序设计天梯赛-练习集L1 个人题解

    另把天梯赛所有题解内容全部打包成了一个文档,可以自行下载:https://download.csdn.net/download/daixinliangwyx/11170075 L1-001 Hello ...

  8. 『ACM C++』 PTA 天梯赛练习集L1 | 048-49

    今日刷题048-049 ------------------------------------------------L1-048---------------------------------- ...

  9. 团体程序设计天梯赛-练习集 L1阶段 全部题解

    L1-001. Hello World 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 这道超级简单的题目没有任何输入. 你只需要在一行中输 ...

最新文章

  1. 学术 | 一种新的CNN网络可以更高效地区分自然图像生成图像
  2. 985、211毕业,就了不起吗?
  3. 【Python】comtypes模块Windows环境下使用批量转换成PDF文件
  4. 赵东、赵鹏被认定为帮信罪
  5. 【XAMPP】中mysql的admin页面打不开
  6. CG之菲涅尔效果简单实现
  7. 判断数字在字符串中的位置 详解(C++)
  8. 【离散数学】集合论 第四章 函数与集合(6) 三歧性定理、两集合基数判等定理(基数的比较)、Cantor定理
  9. QCIF、CIF、DCIF、D1分辨率是多少
  10. Qt QLabel详解
  11. python实现全自动百词斩单词对战,躺着上分轻轻松松
  12. eclipse设置背景图片(并非更换主题)
  13. Hibernate5使用c3p0一些小问题及注意
  14. 如何在宝塔面板中屏蔽垃圾蜘蛛?
  15. appcan 开发步骤
  16. 蓝桥杯 2019年号字串
  17. 睡前改善睡眠的简单方法有哪些,不妨试试这几个小妙招
  18. Alpine安装与使用
  19. pytorch torchvision.ops.roi_align 示例
  20. Selenium+ChromeDriver爬取链家网二手房价(包括经纬度)信息

热门文章

  1. 2022年江西省中职组“网络空间安全”赛项模块B解析
  2. 《新100个基本》摘录,停下来刷新一下思维!
  3. Git Pull Failed: CONFLICT (content): Merge conflict in camus-aggregator/camus-admin-web/src/main/web
  4. Dataset:heart disease心脏病数据集的简介、下载、使用方法之详细攻略
  5. 一辈子很长,要和有趣的人在一起
  6. Count bits set in parallel(查找32位整形数中置1的个数)
  7. 毕达哥拉斯树(Pythagoras-tree)
  8. apache配置wss
  9. FBI是如何守株待兔,将嫌疑犯一网打尽的?
  10. 【231】判断是否是2的次幂--位运算相关