原创于微信公众号“十一维的智子”,每天早上7:00准时更新。点击文章下方的阅读原文可以进入我的CSDN官网,请大家多多支持我,转发给更多的朋友,让更多人享受Coding的乐趣!

大家可以在https://blog.csdn.net/weixin_45497223上给我留言,我会第一时间回复大家的

感谢大家的支持

听说点赞评论+关注的今天会好运当头哦

从今天开始,我要新开一个大坑—叫生存挑战,题目难度在普及组-~提高难度左右,当然难度也是递增的,大家别忘了关注哦。

第一天

1.收集瓶盖赢大奖

题目描述

某饮料公司最近推出了一个“收集瓶盖赢大奖”的活动:如果你拥有10个印有“幸运”、或20个印有“鼓励”的瓶盖,就可以兑换一个神秘大奖。 现分别给出你拥有的印有“幸运”和“鼓励”的瓶盖数,判断是否可以去兑换大奖。

输入描述

第一行,一个正整数 n,表示接下来有 n行数据;

以下 n行,每行包含两个整数分别是印有 “幸运 ”和“鼓励 ”的瓶盖数, 用一个空格隔开。

输出描述

对于每行数据输出一行。若可以兑换大奖,则输出True,否则输出 False 。

样例

输入

2
11 19
3 19

输出

True
False

提示

对于 50% 的数据 :n<=1000 ;对于 100% 的数据 :n<=10000 。

一般情况下,如果你遇到这样输出答案只有True或False的题目,如果你真的不会做,那么只在for循环内写一行cout<<“True”;或False 也能得到很多的部分分,如果别的题目里没有循环那更好,一般都能骗到30分+
思路:
循环+判断,要注意用到||逻辑运算符,因为只有满足一个条件即可
代码:

#include
#include
using namespace std;
int main(){
// freopen(“reward.in”,“r”,stdin);
// freopen(“reward.out”,“w”,stdout);
int n,a,b;
scanf("%d",&n);
while(n–){
scanf("%d%d",&a,&b);
if(a>=10||b>=20){
printf("%s\n",“True”);
}else{
printf("%s\n",“False”);
}
}
// fclose(stdin);
// fclose(stdout);
return 0;
}

2.石头剪刀布

题目描述

 "石头、剪刀、布"是猜拳的一种,两人玩,起源于中国,然后传到日本、韩国等地,随着亚欧贸易的不断发展传到了欧洲,到了近现代逐渐发展到世界。游戏规则中,石头赢剪刀,剪刀赢布,布赢石头。在每局游戏中,获胜方得2分,落败方不得分;平局双方各得1分。已知甲乙两个人玩了多局游戏,请你帮忙计算他们的得分。

输入描述

输入文件名为game.in。第一行,一个正整数n,表示甲乙两个人玩了n局游戏。以下n行,每行两个数,分别表示甲乙两个人出的手势。其中,0表示石头,1表示剪刀,2表示布。

输出描述

输出文件名为game.out。

一行,用一个空格隔开的两个整数,分别表示甲乙两个人的得分。

样例

输入

3
0 1
2 2
0 2

输出

3 3

提示

【样例说明】
第一局:石头对剪刀。甲胜,得 2分,乙得 0分;
第二局:布对布。平局, 甲乙各得 1分;
第三局:石头对布。乙胜 ,甲得 0分,乙得 2分。
总得分:3 3 。

【数据范围】
对于 50% 的数据 :n<=1000;对于 100% 的数据 :n<=10000 。

思路:写一个自定义函数,用来暴力枚举每一种情况(一共9种),统计得分即可

代码:

#include
#include
using namespace std;
int p(int a,int b){//0a输 1a赢 2平局
if(a0){ //a石头
if(b0){
return 2;
}
if(b1){ //剪刀
return 1;
}
if(b2){//布
return 0;
}
}
if(a1){ //a剪刀
if(b1){
return 2;
}
if(b0){
return 0;
}
if(b2){
return 1;
}
}
if(a2){ //a布
if(b2){
return 2;
}
if(b1){
return 0;
}
if(b0){
return 1;
}
}
}
int main(){
//freopen(“game.in”,“r”,stdin);
// freopen(“game.out”,“w”,stdout);
int n,a,b;
long long sum1=0,sum2=0;
scanf("%d",&n);
while(n–){
scanf("%d%d",&a,&b);
if(p(a,b)==0){
sum2+=2;
}
if(p(a,b)==1){
sum1+=2;
}
if(p(a,b)==2){
sum1++;
sum2++;
}

}
cout<<sum1<<" "<<sum2;
//fclose(stdin);
//fclose(stdout);
return 0;
}
3.幸运数字

一个正整数 , 如果它能被 7 整除 ,或者它的十进制表示法中含有数字 7,我们称其为 幸运数字 现求所有小于等于n(n < 1000)的幸运数字的和。

输入描述

输入文件名为 number.in。输入共一行,一个正整数n。(n<1000)

输出描述

输出文件名为 number.out 。输出共一行,包含一个正整数,表示小于等于n的所有与7有关的正整数之和。

样例

输入

【输入样例 1】
21
【输入样例 2】
27

输出

【输出样例 1】
59
【输出样例 2】
86

提示

1,2,3,4,5,6, 7,8,9,10,11,12,13, 14 ,15,16, 17 ,18,19,20, 21 。

1到 21 中,带有下划线的数是 幸运数字,它们的和为59 。

思路:写一个自定义布尔函数,判断是否包含这个7,思路是将这个数数位分离(/=10),再看每一位上的数是否等于7,若等于7则return true一直到这个数<=0,return false如果这个数i同时满足包含并且整除,则sum+=i;

代码:

#include
#include
using namespace std;
bool s(int a){
while(a!=0){
if(a%107){
return true;
}
a/=10;
}
return false;
}
int main(){
// freopen(“number.in”,“r”,stdin);
//freopen(“number.out”,“w”,stdout);
int a;
scanf("%d",&a);
long long sum=0;
for(int i=1;i<=a;i++){
if(i%70||s(i)){

    sum=sum+i;}

}
cout<<sum;
//fclose(stdin);
//fclose(stdout);
return 0;
}
4.数苹果(BOSS)

今年苹果大丰收了,大人们在忙着采摘苹果,摘下来的苹果堆放成了很多堆,所有的苹果堆排成了一排。宣宣一个人在苹果堆旁边玩,她已经知道每堆里有多少个苹果,现在她想知道从第a堆到第b堆有多少个苹果。你能帮她吗?

输入描述

输入文件名为apple.in。第一行,一个整数n,表示苹果堆的个数;第二行,n个正整数,依次表示第1堆、第2堆、……、第n堆的苹果个数;第三行,一个整数m,表示询问的次数;以下m行,每行两个正整数a、b,表示问从第a到b堆的苹果个数。

输出描述

输出文件名为apple.out。

对于每个询问a,b输出一行,表示第a堆到第b堆的苹果个数。

样例

输入

5
1 2 3 4 5
3
1 3
2 4
1 5

输出

6
9
15

提示

对于 100% 的数据:每堆苹果量 <=100; a<=b。
对于 40 %的数据:n,m <=1000 ;
对于 100% 的数据:n,m<=100000 。

咋一看这道题没啥难度,你们的思路肯定是像我这样:

#include
#include
using namespace std;
int main(){
//freopen(“apple.in”,“r”,stdin);
//freopen(“apple.out”,“w”,stdout);
int n,m,a,b,p[100000],p2[100000];
scanf("%d",&n);
int s[100000];
for(int i=0;i<n;i++){
scanf("%d",&s[i]);
}
cin>>m;
int i=0;
for(i=0;i<m;i++){
scanf("%d%d",&a,&b);
p[i]=a;
p2[i]=b;
}
long long sum=0;
for(int j=0;j<i;j++){
sum=0;
for(int k=p[j];k<=p2[j];k++){
sum+=s[k-1];
}
cout<<sum<<"\n";
}
//fclose(stdin);
//fclose(stdout);
return 0;
}
但是,大家看一下数据说明

 对于 100% 的数据:n,m<=100000 。没错,用普通的方法会超时40%!

那我们该怎么优化呢?

我们只需要将数组的存储方式改变一下即可,s[i]=a[0]+a[1]+…+a[i]

数组的第i个是前i堆苹果的和

即有一下结论

1.数组a的[0]=0,输入s,a[i]=a[i-1]+s,s[i]=a[1]+a[2}+...+a[i];2.b个询问, 每次是前a2堆—前a1

代码:

#include
#include
using namespace std;
int main(){
//freopen(“apple.in”,“r”,stdin);
//freopen(“apple.out”,“w”,stdout);
/*
1.数组a的[0]=0,输入s,a[i]=a[i-1]+s,s[i]=a[1]+a[2}+…+a[i];
2.b个询问, 每次是前a2堆—前a1-1堆 ;
*/
int n,m,a,b,p[100000],p2[100000],as;
scanf("%d",&n);
int s[100000];
s[0]=0;
for(int i=1;i<=n;i++){
scanf("%d",&as);
s[i]=s[i-1]+as;
}
cin>>m;
int i=0;
for(i=0;i<m;i++){
scanf("%d%d",&a,&b);
cout<<s[b]-s[a-1]<<"\n";
}

//fclose(stdin);
//fclose(stdout);
return 0;
}

好了,今天的内容到现在就结束了,不知道大家有木有听懂呢?听不懂的别忘了在https://blog.csdn.net/weixin_45497223上给我留言,我会第一时间为大家解答的。明天一定要来哦,早上7:00,我们不见不散~~~

扫描下面的二维码,每天都有最新的内容哦

收集瓶盖赢大奖+石头剪刀布+幸运数字+数苹果相关推荐

  1. 1045:收集瓶盖赢大奖

    1045:收集瓶盖赢大奖 时间限制: 1000 ms 内存限制: 65536 KB [题目描述] 某饮料公司最近推出了一个"收集瓶盖赢大奖"的活动:如果你拥有10个印有" ...

  2. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1045:收集瓶盖赢大奖

    时间限制: 1000 ms 内存限制: 65536 KB 提交数: 15493 通过数: 10671 [题目描述] 某饮料公司最近推出了一个"收集瓶盖赢大奖"的活动:如果你拥有10 ...

  3. 信息学奥赛一本通(1045:收集瓶盖赢大奖)

    1045:收集瓶盖赢大奖 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 58151     通过数: 39099 [题目描述] 某饮料公司最近推出了一个" ...

  4. 收集瓶盖赢大奖(信息学奥赛一本通-T1045)

    [题目描述] 某饮料公司最近推出了一个"收集瓶盖赢大奖"的活动:如果你拥有10个印有"幸运".或20个印有"鼓励"的瓶盖,就可以兑换一个神秘 ...

  5. 信息学奥赛一本通C++语言——1045:收集瓶盖赢大奖

    [题目描述] 某饮料公司最近推出了一个"收集瓶盖赢大奖"的活动:如果你拥有10个印有"幸运".或20个印有"鼓励"的瓶盖,就可以兑换一个神秘 ...

  6. 【选择结构】收集瓶盖赢大奖

    前言实在是没有什么好说的,这次就不写前言了. 正文 题目描述:某饮料公司最近推出了一个"收集瓶盖赢大奖"的活动,如果你拥有10个印有"幸运"或20个印有&quo ...

  7. 【C++】1045:收集瓶盖赢大奖(信息学奥赛)

    好了,今天的内容就是收集瓶盖赢大奖了,内容的详细意思也就是如果你拥有10个印有"幸运".或20个印有"鼓励"的瓶盖,就可以兑换一个神秘大奖.现分别给出你拥有的印 ...

  8. NOI-1.4(07) 收集瓶盖赢大奖

    07:收集瓶盖赢大奖 描述 某饮料公司最近推出了一个"收集瓶盖赢大奖"的活动:如果你拥有10个印有"幸运".或20个印有"鼓励"的瓶盖,就可 ...

  9. 收集瓶盖赢大奖(YZOJ-1036)

    [问题描述] 某饮料公司最近推出了一个"收集瓶盖赢大奖"的活动:如果你拥有10个印有"幸运".或20个印有"鼓励"的瓶盖,就可以兑换一个神秘 ...

最新文章

  1. MyBatis的扩展点(plugins)
  2. 使用DPM 2012 Sp1保护SQL server 2012 Sp1
  3. Rolling Guidance Filter
  4. 使用Azure DevOps Pipeline实现.Net Core程序的CI
  5. ReentrantLock可重入锁使用及原理
  6. 797. 所有可能的路径
  7. undo log mysql_MySQL的redo log与undo log
  8. 在32位的linux平台上为Oracle配置1.7GB的SGA
  9. php解析json里的hson_这种json字符串PHP如何解析?
  10. 给oracle数据库某一列数据的前面或者后面增加字符,合并两列的值
  11. vs 服务容器中已存在服务_无服务器vs容器,企业如何正确选择?
  12. AutoCad vba宏 用于线路设计方面简化工作量 明白的拿走
  13. 开源轻量级企业内容管理系统-鱼跃CMS v2.0.0
  14. Android保存图片到本地或者数据库,并通知相册更新
  15. BES(恒玄) 平台 复杂按键 实现
  16. Gruobi多目标规划
  17. 客观的看待人工智能,也许并没有那么可怕
  18. java camel exchange类_让Camel处理各种URI类型
  19. 两个地址之间的距离测量(使用高德API)
  20. 那些闪光的思想和智慧-让自己慢下来(36)

热门文章

  1. opencv-python给图片添加半透明mask
  2. 水晶报表打印出错,未能加载文件或程序集“CrystalDecisions.CrystalReports.Engine, Version=10.5.3700.0
  3. 赢得值系列2:赢得值理论的关键参数
  4. 2013-08-17 PMP错题记录(第七章)
  5. iframe标签控制视频大小及自动播放
  6. 制作一幅好地图的10个技巧
  7. 「STL详解」RB-tree 红黑树
  8. 今日收获(数据库方向)
  9. 南方cass字体样式设置_统一设置导航条风格和修改字体
  10. ios swift收起键盘