PTA团体程序设计天梯赛-练习集51-55题
L1-051 打折
去商场淘打折商品时,计算打折以后的价钱是件颇费脑子的事情。例如原价 ¥988,标明打 7 折,则折扣价应该是 ¥988 x 70% = ¥691.60。本题就请你写个程序替客户计算折扣价。
输入格式:
输入在一行中给出商品的原价(不超过1万元的正整数)和折扣(为[1, 9]区间内的整数),其间以空格分隔。
输出格式:
在一行中输出商品的折扣价,保留小数点后 2 位。
输入样例:
988 7
输出样例:
691.60
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main(){
int n;
cin>>n;
int discount;
cin>>discount;
double c=n*1.0*discount*0.1;
printf("%.2f",c);
return 0;
}
L1-052 2018我们要赢
2018年天梯赛的注册邀请码是“2018wmyy”,意思就是“2018我们要赢”。本题就请你用汉语拼音输出这句话。
输入格式:
本题没有输入。
输出格式:
在第一行中输出:“2018”;第二行中输出:“wo3 men2 yao4 ying2 !”。
输入样例:
无
输出样例:
2018 wo3 men2 yao4 ying2 !
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main(){
printf("2018\nwo3 men2 yao4 ying2 !");
return 0;
}
L1-053 电子汪
据说汪星人的智商能达到人类 4 岁儿童的水平,更有些聪明汪会做加法计算。比如你在地上放两堆小球,分别有 1 只球和 2 只球,聪明汪就会用“汪!汪!汪!”表示 1 加 2 的结果是 3。
本题要求你为电子宠物汪做一个模拟程序,根据电子眼识别出的两堆小球的个数,计算出和,并且用汪星人的叫声给出答案。
输入格式:
输入在一行中给出两个 [1, 9] 区间内的正整数 A 和 B,用空格分隔。
输出格式:
在一行中输出 A + B 个
Wang!
。输入样例:
2 1
输出样例:
Wang!Wang!Wang!
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main(){
int m,n;
cin>>m>>n;
int b=m+n;
for(int i=1;i<=b;i++){
cout<<"Wang!";
}
return 0;
}
L1-054 福到了【有没有跟博主一样的,讨厌这种题哈哈哈,博主是菜鸟,这一题就上我搜的代码啦~】
“福”字倒着贴,寓意“福到”。不论到底算不算民俗,本题且请你编写程序,把各种汉字倒过来输出。这里要处理的每个汉字是由一个 N × N 的网格组成的,网格中的元素或者为字符
@
或者为空格。而倒过来的汉字所用的字符由裁判指定。输入格式:
输入在第一行中给出倒过来的汉字所用的字符、以及网格的规模 N (不超过100的正整数),其间以 1 个空格分隔;随后 N 行,每行给出 N 个字符,或者为
@
或者为空格。输出格式:
输出倒置的网格,如样例所示。但是,如果这个字正过来倒过去是一样的,就先输出
bu yong dao le
,然后再用输入指定的字符将其输出。输入样例 1:
$ 9 @ @@@@@ @@@ @@@ @ @ @ @@@ @@@ @@@ @@@@@ @@@ @ @ @ @@@ @@@@@ @ @ @ @ @ @@@@@
输出样例 1:
$$$$$ $ $ $ $ $ $$$$$ $$$ $ $ $ $$$ $$$$$ $$$ $$$ $$$ $ $ $ $$$ $$$ $$$$$ $
输入样例 2:
& 3 @@@ @ @@@
输出样例 2:
bu yong dao le &&& & &&&
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <cstring>
using namespace std;
int main()
{
char c;
int n;
cin>>c>>n;
string s[n];
getchar();
for(int i=0;i<n;i++)
getline(cin,s[i]);
bool issame=true;
for(int i=0;i<n;i++)//依次判断该字符与对角线的字符是否相等
{
for(int j=0;j<n;j++)
{
int a=n-i-1;
int b=n-j-1;
if(s[a][b]!=s[i][j])
issame=false;
}
}
if(issame)//相等情况原样按照录入字符输出
{
cout<<"bu yong dao le"<<endl;
for(int i=0;i<n;i++)//
{
for(int j=0;j<n;j++)
{
if(s[i][j]==' ')
cout<<' ';
else
cout<<c;
}
cout<<endl;
}
}
else
{
for(int i=0;i<n;i++)//输出
{
for(int j=0;j<n;j++)
{
int a=n-i-1;
int b=n-j-1;
if(s[a][b]==' ')
cout<<' ';
else
cout<<c;
}
cout<<endl;
}
}
return 0;
}
L1-055 谁是赢家
某电视台的娱乐节目有个表演评审环节,每次安排两位艺人表演,他们的胜负由观众投票和 3 名评委投票两部分共同决定。规则为:如果一位艺人的观众票数高,且得到至少 1 名评委的认可,该艺人就胜出;或艺人的观众票数低,但得到全部评委的认可,也可以胜出。节目保证投票的观众人数为奇数,所以不存在平票的情况。本题就请你用程序判断谁是赢家。
输入格式:
输入第一行给出 2 个不超过 1000 的正整数 Pa 和 Pb,分别是艺人 a 和艺人 b 得到的观众票数。题目保证这两个数字不相等。随后第二行给出 3 名评委的投票结果。数字 0 代表投票给 a,数字 1 代表投票给 b,其间以一个空格分隔。
输出格式:
按以下格式输出赢家:
The winner is x: P1 + P2
其中
x
是代表赢家的字母,P1
是赢家得到的观众票数,P2
是赢家得到的评委票数。输入样例:
327 129 1 0 1
输出样例:
The winner is a: 327 + 1
#include<iostream>
using namespace std;
int main(){
int pa,pb;
cin>>pa>>pb;
int arr[3];
int na=0,nb=0;
for(int i=0;i<3;i++){
cin>>arr[i];
if(arr[i]==1) nb++;
else na++;
}
if(na==3)printf("The winner is a: %d + 3",pa);
else if(nb==3)printf("The winner is b: %d + 3",pb);
else if(pa>pb&&na>0&&na<3)printf("The winner is a: %d + %d",pa,na);
else if(pa<pb&&nb>0&&nb<3)printf("The winner is b: %d + %d",pb,nb);
return 0;
}