洛谷刷题笔记1
题单
【入门2】分支结构
P5710 数的性质
题目描述
一些整数可能拥有以下的性质:
- 性质 1:是偶数;
- 性质 2:大于 4 且不大于 12。
小 A 喜欢这两个性质同时成立的整数;Uim 喜欢这至少符合其中一种性质的整数;八尾勇喜欢刚好有符合其中一个性质的整数;正妹喜欢不符合这两个性质的整数。现在给出一个整数 x*,请问他们是否喜欢这个整数?
输入格式
输入一个整数 x(0\le x \le 1000)x(0≤x≤1000)
输出格式
输出这 4 个人是否喜欢这个数字,如果喜欢则输出 1
,否则输出 0
,用空格分隔。输出顺序为:小 A、Uim、八尾勇、正妹。
输入输出样例
输入 #1复制
12
输出 #1复制
1 1 0 0
#include<bits/stdc++.h>
using namespace std;
int main()
{
int input;
cin>>input;
int a,b;
if(input%2==0){
a=1;
}else{
a=0;
}
if(input>4&&input<=12){
b=1;
}else{
b=0;
}
// 相对于大量的分支语句,使用逻辑运算符可以大幅度节省代码量
printf("%d %d %d %d", a & b, a | b, (a && !b || b && !a), !a && !b);
return 0;
}
P5711 闰年判断
题目描述
输入一个年份,判断这一年是否是闰年,如果是输出 1,否则输出 0。
输入格式
输入一个正整数 n*,表示年份。
输出格式
输出一行。如果输入的年份是闰年则输出 1,否则输出 0。
输入输出样例
输入 #1复制
1926
输出 #1复制
0
输入 #2复制
1900
输出 #2复制
0
输入 #3复制
2000
输出 #3复制
1
输入 #4复制
1996
输出 #4复制
1
#include<bits/stdc++.h>
using namespace std;
int main()
{
int year;
cin>>year;
int flag=0;
// 闰年判断条件有两点:1.能被4整除且不能被100整除;2.能被400整除;
if((year%4==0&&year%100!=0)||(year%400==0)){
flag=1;
}
cout<<flag<<endl;
return 0;
}
P5712 Apples
八尾勇喜欢吃苹果。她今天吃掉了 xx 个苹果。英语课上学到了 apple 这个词语,想用它来造句。如果她吃了 1 个苹果,就输出 Today, I ate 1 apple.
;如果她没有吃,那么就把 1 换成 0;如果她吃了不止一个苹果,别忘了 apple
这个单词后面要加上代表复数的 s
。你能帮她完成这个句子吗?
输入格式
输入一行一个自然数 x*x,表示吃掉的苹果数。
输出格式
根据题目要求输出。
输入输出样例
输入 #1复制
1
输出 #1复制
Today, I ate 1 apple.
输入 #2复制
3
输出 #2复制
Today, I ate 3 apples.
#include<bits/stdc++.h>
using namespace std;
int main()
{
int number;
cin>>number;
if(number>1){
printf("Today, I ate %d apples.",number);
}else{
printf("Today, I ate %d apple.",number);
}
return 0;
}
P5713 洛谷团队系统
题目描述
在洛谷上使用团队系统非常方便的添加自己的题目。如果在自己的电脑上配置题目和测试数据,每题需要花费时间 5 分钟;而在洛谷团队中上传私有题目,每题只需要花费 3 分钟,但是上传题目之前还需要一次性花费 11 分钟创建与配置团队。现在要配置 n 道题目,如果本地配置花费的总时间短,请输出 Local
,否则输出 Luogu
。
输入格式
输入一个正整数 n,表示需要配置的题目量。
输出格式
输出一行,一个字符串。如果本地配置花费的总时间短,请输出 Local
,否则输出 Luogu
。
输入输出样例
输入 #1复制
2
输出 #1复制
Local
输入 #2复制
50
输出 #2复制
Luogu
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n=0;
cin>>n;
int resultMy,resultLuo;
resultLuo=11+n*3;
resultMy=n*5;
if(resultMy>resultLuo){
cout<<"Luogu";
}else{
cout<<"Local";
}
return 0;
}
P5714 肥胖问题题目描述
题目描述
BMI 指数是国际上常用的衡量人体胖瘦程度的一个标准,其算法是,其中 m 是指体重(千克),h是指身高(米)。不同体型范围与判定结果如下:
- 小于 18.5:体重过轻,输出
Underweight
; - 大于等于 18.5 且小于 24:正常体重,输出
Normal
; - 大于等于 24:肥胖,不仅要输出 BMI 值(使用
cout
的默认精度),然后换行,还要输出Overweight
;
现在给出体重和身高数据,需要根据 BMI 指数判断体型状态并输出对应的判断。
对于非 C++ 语言,在输出时,请四舍五入保留六位有效数字输出,如果小数部分存在后缀 0,不要输出后缀 0。
请注意,保留六位有效数字不是保留六位小数。
输入格式
共一行。
第一行,共 2 个浮点数,m,n,分别表示体重(单位为 kg),身高(单位为 m)。
输出格式
输出一行一个字符串,表示根据 BMI 的对应判断。特别地,对于 Overweight
情况的特别处理请参照题目所述。
输入输出样例
输入 #1复制
70 1.72
输出 #1复制
Normal
#include<bits/stdc++.h>
using namespace std;
int main()
{
double m,h;
cin>>m>>h;
double BMI=m/(h*h);
if(BMI<18.5){
cout<<"Underweight"<<endl;
}else if(BMI>=18.5&&BMI<24){
cout<<"Normal"<<endl;
}else{
cout<<BMI<<endl<<"Overweight"<<endl;
}
return 0;
}
P5715 三位数排序
题目描述
给出三个整数 a,b,c(0\le a,b,c \le 100)a,b,c(0≤a,b,c≤100),要求把这三位整数从小到大排序。
输入格式
输入三个整数 a,b,c,以空格隔开。
输出格式
输出一行,三个整数,表示从小到大排序后的结果。
输入输出样例
输入 #1复制
1 14 5
输出 #1复制
1 5 14
输入 #2复制
2 2 2
输出 #2复制
2 2 2
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[3]={0};
cin>>a[0]>>a[1]>>a[2];
sort(a,a+3);
cout<<a[0]<<' '<<a[1]<<' '<<a[2]<<endl;
return 0;
}
P5716 月份天数
题目描述
输入年份和月份,输出这一年的这一月有多少天。需要考虑闰年。
输入格式
输入两个正整数,分别表示年份 yy 和月数 mm,以空格隔开。
输出格式
输出一行一个正整数,表示这个月有多少天。
输入输出样例
输入 #1复制
1926 8
输出 #1复制
31
输入 #2复制
2000 2
输出 #2复制
29
#include<bits/stdc++.h>
using namespace std;
int main()
{
int year,month;
cin>>year>>month;
int flag=0;
// 闰年判断条件有两点:1.能被4整除且不能被100整除;2.能被400整除;
if((year%4==0&&year%100!=0)||(year%400==0)){
flag=1;
}
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//定义月份对应天数数组
if(flag==1){
a[2]=29;
}
cout<<a[month];
return 0;
}
P1085 不高兴的津津
题目描述
津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。
输入格式
输入包括 77 行数据,分别表示周一到周日的日程安排。每行包括两个小于 1010 的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。
输出格式
一个数字。如果不会不高兴则输出 00,如果会则输出最不高兴的是周几(用 1, 2, 3, 4, 5, 6, 71,2,3,4,5,6,7 分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。
输入输出样例
输入 #1复制
5 3
6 2
7 2
5 3
5 4
0 4
0 6
输出 #1复制
3
#include<bits/stdc++.h>
using namespace std;
int main()
{
int r[7];
for(int i=0;i<7;i++){
int a,b;
cin>>a>>b;
r[i]=a+b;
}
int max=r[0];
int n=0;
for(int j=0;j<7;j++){
if(r[j]>max){
max=r[j];
n=j+1;
}
}
cout<<n<<endl;
return 0;
}
P1909 买铅笔
题目背景
NOIP2016 普及组 T1
题目描述
P 老师需要去商店买 nn 支铅笔作为小朋友们参加 NOIP 的礼物。她发现商店一共有 33 种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起 见,P 老师决定只买同一种包装的铅笔。
商店不允许将铅笔的包装拆开,因此 P 老师可能需要购买超过 nn 支铅笔才够给小朋友们发礼物。
现在 P 老师想知道,在商店每种包装的数量都足够的情况下,要买够至少 nn 支铅笔最少需要花费多少钱。
输入格式
第一行包含一个正整数 nn,表示需要的铅笔数量。
接下来三行,每行用 22 个正整数描述一种包装的铅笔:其中第 11 个整数表示这种包装内铅笔的数量,第 22 个整数表示这种包装的价格。
保证所有的 77 个数都是不超过 1000010000 的正整数。
输出格式
11 个整数,表示 P 老师最少需要花费的钱。
输入输出样例
输入 #1复制
57
2 2
50 30
30 27
输出 #1复制
54
输入 #2复制
9998
128 233
128 2333
128 666
输出 #2复制
18407
输入 #3复制
9999
101 1111
1 9999
1111 9999
输出 #3复制
89991
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a1,a2,b1,b2,c1,c2,a,b,c,z;
scanf("%d",&n);//n是需要的数量
scanf("%d %d",&a1,&a2);//a1是数量,a2是价格
scanf("%d %d",&b1,&b2);
scanf("%d %d",&c1,&c2);
a=n/a1;a1=n%a1==0?a:a+1;a=a1*a2;//第一和第二表达式求至少需要买的铅笔包数,第三给表达式表示总共需要的价格
b=n/b1;b1=n%b1==0?b:b+1;b=b1*b2;//同上
c=n/c1;c1=n%c1==0?c:c+1;c=c1*c2;//同上
if(a<b&&a<c)z=a;//取最省钱的方案,赋值给z
if(b<a&&b<c)z=b;
if(c<b&&c<a)z=c;
printf("%d\n",z);
return 0;
}