T1 购买苹果
题目描述
每箱苹果价值n元,购买m箱苹果,需要多少钱。
输入格式
输入两个整数n和m(1≤n≤50,1≤m≤100),分别表示每箱苹果的价格及购买苹果的箱数,整数之间以一个空格隔开。
输出格式
输出一个整数,表示购买m箱苹果需要的钱数。
输入输出样例 #1
输入 #1
10 30
输出 #1
300
#include<iostream>
using namespace std;
int main(){
// T1 购买苹果
int n,m;
cout << n * m << endl;
return 0;
}
T2 分南瓜
题目描述
农场有3块农田,每块农田有若干个南瓜,小夏希望将每块农田的南瓜分成两份,要求每份中的南瓜数量均为奇数。请帮助小夏逐一判断每块农田中南瓜的数量能否满足要求。
例如:3块农田中南瓜的数量依次为6,8,7;
第1块农田中南瓜数量为6,可以分为3和3两份,均为奇数,满足条件;
第2块农田中南瓜数量为8,可以分为1和7两份,均为奇数,满足条件;
第3块农田中南瓜数量为7,无论如何分配,都无法确保两份南瓜的数量均为奇数,因此不满足条件。
输入格式
一行输入3个整数(2≤整数≤500),分别表示每块农田中南瓜的数量,整数之间以一个空格隔开。
输出格式
输出3个整数,依次表示对应农田中南瓜的数量是否满足分配要求,如果满足输出1,否则输出0,整数之间以一个空格隔开。
输入输出样例 #1
输入 #1
6 8 7
输出 #1
1 1 0
#include<iostream>
using namespace std;
int main(){
// T2 分南瓜
// 思路一
int ans[3] = {0};
for(int i = 0;i < 3;i++){
int num;
cin >> num;
for(int j = 1;j <= num;j++){
int k = num - j; //遍历差值,判断奇数
if(j % 2 != 0 && k % 2 != 0){
ans[i] = 1;
break;
}
}
}
for(int i = 0;i < 3;i++){
cout << ans[i] << " ";
}
// 思路2:奇偶性和差规则:同则偶,异则奇。
int a,b,c;
cin >> a >> b >> c;
int ansA = a % 2 == 0 ? 1 : 0;
int ansB = b % 2 == 0 ? 1 : 0;
int ansC = c % 2 == 0 ? 1 : 0;
cout << ansA << " " << ansB << " " << ansC << endl;
return 0;
}
T3 超级幸运数
题目描述
乐乐有两个幸运数字,分别是 4 和 7。如果一个整数满足以下两个条件中的任意一个,乐乐就会称其为超级幸运数。条件如下:
1)整数中各数位上的数字都是幸运数字,例如4、47、444;
2)整数中数位上所包含的所有幸运数字的总数是幸运数字,例如414177(其中包含了2个4和2个7,共有4个幸运数字)。
给定n个整数,请判断其中有多少个超级幸运数。
例如:n = 3,3个整数分别为74、417、40444444:
整数74是超级幸运数,因为数位上的7和4都是幸运数字,满足条件1;
整数417不是超级幸运数,因为数位中1不是幸运数字,不满足条件1,且数位中幸运数字的总数是2,2不是幸运数字,不满足条件2;
整数40444444是超级幸运数,因为40444444的数位中幸运数字的总数是7,7是幸运数字,满足条件 2;
综上所述,共有2个超级幸运数。
输入格式
第一行输入一个整数n(1≤n≤1000);
第二行输入n个整数(1≤整数≤10³*³),整数之间以一个空格隔开。
输出格式
输出一个整数,表示超级幸运数的数量。
输入输出样例 #1
输入 #1
3
74 417 40444444
输出 #1
2
#include<iostream>
using namespace std;
int main(){
// T3 超级幸运数字
int n,ans = 0;
cin >> n;
for(int i = 0;i < n;i++){
int num;
cin >> num;
int lukCnt = 0; //幸运数字的个数
bool allLukNum = true; //默认全部是幸运数字
while(num != 0){
int digit = num % 10; //数字拆解思路:通过%10,/10进行处理
if(digit == 4 || digit == 7){
lukCnt++;
}else{
allLukNum = false;
}
num = num / 10;
}
if(allLukNum || lukCnt == 4 || lukCnt == 7){ //数字全是4和7,或者幸运数字总和达到4或者7
ans++;
}
}
cout << ans << endl;
return 0;
}
T4 单词验证
题目描述
小丁在学习英语单词时发现,某些单词如果删除若干字母后(不改变剩余字母的顺序)可得到另一个单词。
现有N组数据,每组数据中给定两个仅包含小写字母的字符串,表示初始单词s和目标单词t,请判断对于每组数据,能否从s中删除零个或多个字母得到t,如果能得到输出"YES",否则输出"NO"。
例如:
N = 2,两组数据如下:
1)s = “adventure”,t = “avenue”,删除"adventure"中的第2、6、8个字母可得到"avenue",故输出YES;
2)s = “good”,t = “no”,无论怎么删除都无法得到t,故输出NO。
输入格式
第一行输入一个正整数N(1≤N≤1000),表示数据组数;
接下来N行,每行输入两个仅包含小写字母的字符串,分别表示初始单词s(1≤s的长度≤500)和目标单词t(1≤t的长度≤500),字符串之间以一个空格隔开。
输出格式
共N行,每行输出一个字符串,如果能从初始单词s中删除零个或多个字母得到目标单词t,输出"YES",否则输出"NO"。
输入输出样例 #1
输入 #1
2
adventure avenue
good no
输出 #1
YES
NO
#include<iostream>
#include<string>
using namespace std;
int main(){
// T4 单词验证
int n;
cin >> n;
string ans[n];
for(int i = 0;i < n;i++){
string s,t;
cin >> s >> t;
/*
使用两个指针,分别指向s和t的开头
遍历s和t,如果s[j] == t[k],则k向后移动(表示匹配了一个字符)。
最终如果k移动到t的末尾,说明t是s的子序列,输出YES;否则输出NO。
*/
int j = 0,k = 0;
int sLen = s.length(),tLen = t.length();
while(j != sLen){
if(s[j] == t[k]){
k++;
}
j++;
}
if(k == tLen){
ans[i] = "YES";
}else{
ans[i] = "NO";
}
}
for(int i = 0;i < n;i++){
cout << ans[i] << endl;
}
return 0;
}
T5 小球的重量
题目描述
有n个小球,编号为1到n,所有小球的重量均不相等。
按照编号顺序,依次给出1到n - 1号小球与其他小球的重量比较关系(<表示小于,>表示大于)。
请找出重量第k大的小球,并输出其编号。
例如:n = 4,有4个小球,比较关系如下:
1号小球与2、3、4号小球的重量比较关系:小于2号,小于3号,大于4号;用"< < >“表示。
2号小球与3、4号小球的重量比较关系:大于3号,大于4号;用”> >“表示。
3号小球与4号小球的重量比较关系:大于4号;用”>"表示。
根据上述比较关系可得,按照重量由大到小排序后小球的编号分别为:2、3、1、4;
当k = 3时,重量第3大的小球编号为1。
输入格式
共n + 1 行;
第一行输入一个整数n(1≤n≤2000),表示小球的数量;
第二行输入n - 1个字符,字符为’>’或’<‘,依次表示1号小球与2、3、…、n号小球的重量比较关系;
第三行输入n - 2个字符,字符为’>‘或’<‘,依次表示2号小球与3、4、.·、n号小球的重量比较关系;
…
第n行输入1个字符,字符为’>‘或’<',表示n - 1号小球与n号小球的重量比较关系;
以上输入中,同一行字符之间以一个空格隔开;
第n + 1行输入一个整数k(1≤k≤n)。
输出格式
输出一个整数,表示重量第k大的小球编号。
输入输出样例 #1
输入 #1
4
< < >
> >
>
3
输出 #1
1
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool cmpSecond(pair<int,int> a,pair<int,int> b){
return a.second > b.second;
}
int main(){
// T5 小球的重量
int n;
cin >> n;
vector<int> cnt(n + 1,0); //动态数组(长度,初始值)
for(int i = 1;i <= n;i++){
for(int j = i + 1;j <= n;j++){
char c;
cin >> c; //输入比较关系
if (c == '>'){
cnt[i]++; //i比j重,i的次数加1
}else if (c == '<') {
cnt[j]++; //j比i重,j的次数加1
}
}
}
int k;
cin >> k;
vector<pair<int,int>> balls; //键值对
for(int i = 1;i <= n;i++){
balls.push_back({i,cnt[i]}); //将小球编号和大于次数进行配对
}
sort(balls.begin(),balls.end(),cmpSecond); //greater<int>:降序排序,less<int>:升序排序,默认针对pair第一项排序。因此自定义cmp函数,针对第二项排序。
// for(int i = 0;i < balls.size();i++){
// cout << balls[i].first << " " << balls[i].second << endl; //键值对排序效果
// }
cout << balls[k - 1].first << endl;
return 0;
}
1715

被折叠的 条评论
为什么被折叠?



