题目:苹果和虫子
八尾勇喜欢吃苹果。她现在有 m(1≤m≤100)个苹果,吃完一个苹果需要花费 t(0≤≤t≤100)分钟,吃完一个后立刻开始吃下一个。现在时间过去了 s(1≤s≤10000)分钟,请问她还有几个完整的苹果?
输入:
输入三个非负整数表示 m,t,s。
输出:
输出一个整数表示答案。
输入样例:
50 10 200
输出样例:
30
解题思路:这题乍一看很简单(实则确实很简单),那我为什么总结这个问题呢,是因为他有三个需要考虑的坑,我就考虑了其中一个。那么给大家现在介绍一下这题的坑有哪些?
1.s是否能够整除t,因为题目中说的是还剩下几个完整的苹果,像是s不能整除t,也就是说明有一个苹果还在吃,但没完全吃完,但那个也算是不完整的苹果,所以我们在代码中要有一个判断操作,判断s是否能整除t
2.是否会存在时间过长导致s除t的值比m还要大,这样我们在代码中得出的结果是m-s/t,但是由于后者很大,所以说当结果是负数的时候,让结果变成0
3.是否存在t==0的情况,那么的话就要特判了,一瞬间就可以吃完,因此也要输出0(这个是本题最难想到的坑了)(但是洛谷的下面会有注意,大家心细一点就能看到)
#include <stdio.h>
int main()
{
int m,t,s;
scanf("%d%d%d",&m,&t,&s);
if(t==0)//特判t为0的情况
{
printf("0\n");
return 0;
}
else
{
int flag=s/t;
if(s%t==0)//判断是否存在吃了但没完全吃完的情况
{
flag=flag;
}
else
{
flag=flag+1;
}
int z=m-flag;//得出结果
if(z<=0)//这个就是要考虑第二个坑部分的代码,就是时间过长的情况
{
z=0;
}
printf("%d\n",z);
return 0;
}
}
题目:数的性质
一些整数可能拥有以下的性质:
- 性质 1:是偶数;
- 性质 2:大于 44 且不大于 1212。
小 A 喜欢这两个性质同时成立的整数;Uim 喜欢这至少符合其中一种性质的整数;八尾勇喜欢刚好有符合其中一个性质的整数;正妹喜欢不符合这两个性质的整数。现在给出一个整数 x,请问他们是否喜欢这个整数?
输入:
输入一个整数 x(0≤x≤1000)
输出:
输出这 4 个人是否喜欢这个数字,如果喜欢则输出 1
,否则输出 0
,用空格分隔。输出顺序为:小 A、Uim、八尾勇、正妹。
样例输入:
12
样例输出:
1 1 0 0
解题思路,首先这题就是洛谷上的算是水题吧,给大家刷自信用的,但是由于博主太小白了,还是在细节处理上错了,因此给大家总结出来,只需要给四个人加上各自准确的条件
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a=0,b=0,c=0,d=0;
if(n%2==0&&n>4&&n<=12)//小A是要求两个条件都满足
{
a=1;
}
if(n%2==0||(n>4&&n<=12))//uim是要求两个满足一个即可
{
b=1;
}
if((n%2==0&&n<=4||n>12)||(n%2!=0&&n>4&&n<=12))
//八尾勇是要两个条件只能满足一个
//(但第二个条件不能是(n<=4&&n>12))这样不符合数学公式昂
//那为什么博主一开始写成这个,可能是因为脑子不够用吧,又失误了,可恶!
{
c=1;
}
if(n%2!=0&&n<=4||n>12)//正妹是两个都不能满足
{
d=1;
}
printf("%d %d %d %d\n",a,b,c,d);
return 0;
}
题目:肥胖问题
BMI 指数是国际上常用的衡量人体胖瘦程度的一个标准,其算法是 m/(h*h),其中 m 是指体重(千克),ℎh 是指身高(米)。不同体型范围与判定结果如下:
- 小于 18.518.5:体重过轻,输出
Underweight
; - 大于等于 18.518.5 且小于 2424:正常体重,输出
Normal
; - 大于等于 2424:肥胖,不仅要输出 BMI 值(使用
cout
的默认精度),然后换行,还要输出Overweight
;
现在给出体重和身高数据,需要根据 BMI 指数判断体型状态并输出对应的判断。
对于非 C++ 语言,在输出时,请四舍五入保留六位有效数字输出,如果小数部分存在后缀 0,不要输出后缀 0。
请注意,保留六位有效数字不是保留六位小数。例如 123.4567123.4567 应该输出为 123.457123.457,5432.105432.10 应该输出为 5432.15432.1。
输入:
共一行。
第一行,共 2个浮点数,m,h,分别表示体重(单位为 kg),身高(单位为 m)。
输出:
输出一行一个字符串,表示根据 BMI 的对应判断。特别地,对于 Overweight
情况的特别处理请参照题目所述。
样例输入:
100 1.68
样例输出:
35.4308 Overweight
解题思路:这题是一个很简单的题,这题唯一的知识点就是有效数字的输出
#include <stdio.h>
int main()
{
double m,h;
scanf("%lf%lf",&m,&h);
double flag=m/h/h;
if(flag<18.5)
{
printf("Underweight\n");
}
if(flag>=18.5&&flag<24)
{
printf("Normal\n");
}
if(flag>=24)
{
printf("%.6g\n",flag);//这个就是输出有效数字的方法%.ng(n指的是几位有效数字)
printf("Overweight\n");
}
return 0;
}
题目:不高兴的津津
津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。
输入:
输入包括 77 行数据,分别表示周一到周日的日程安排。每行包括两个小于 1010 的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。
输出:
一个数字。如果不会不高兴则输出 00,如果会则输出最不高兴的是周几(用 1,2,3,4,5,6,71,2,3,4,5,6,7 分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。
输入样例:
5 3 6 2 7 2 5 3 5 4 0 4 0 6
输出样例:
3
解题思路:这题其实也是一个水题,可以用两个数组来存储每天在学校上课的时间和课外学习时间
然后用一个for循环求出每天学习时间总长,若是大于八个小时就要进行与最长学习时间的比较,若是大于最长学习时间就需要更新最不高兴的一天(这边我见了很多人没有考虑到学习时间是否大于8的情况导致出现了WA)
#include <stdio.h>
int main()
{
int a[10]={0},b[10]={0};
int sum=0,max=0,max1=0;
//sum是用于计算每天学习的时间,max用于存储哪天最不高兴,max1用于存储最长学习时间
for(int i=1;i<=7;i++)//遍历循环周一到周天
{
scanf("%d%d",&a[i],&b[i]);//循环输入每天的课内时间和课外时间
}
for(int i=1;i<=7;i++)//遍历循环周一到周天
{
sum=0;
sum=a[i]+b[i];
if(sum>max1&&sum>8)//判断条件,本天学习时间是否超过最长学习时间以及是否超过八个小时
{
max=i;
max1=sum;
}
}
printf("%d\n",max);//输出最不高兴的是周几
return 0;
}
题目:买铅笔
P 老师需要去商店买 n 支铅笔作为小朋友们参加 NOIP 的礼物。她发现商店一共有 33 种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起 见,P 老师决定只买同一种包装的铅笔。
商店不允许将铅笔的包装拆开,因此 P 老师可能需要购买超过 n 支铅笔才够给小朋友们发礼物。
现在 P 老师想知道,在商店每种包装的数量都足够的情况下,要买够至少 n 支铅笔最少需要花费多少钱。
输入:
第一行包含一个正整数 n,表示需要的铅笔数量。
接下来三行,每行用 2 个正整数描述一种包装的铅笔:其中第 11 个整数表示这种包装内铅笔的数量,第 2 个整数表示这种包装的价格。
保证所有的 7 个数都是不超过 10000的正整数。
输出:
1 个整数,表示 P 老师最少需要花费的钱。
输入样例:
9998 128 233 128 2333 128 666
输出样例:
18407
解题思路:这题就是水题一个没啥考察的知识点,设两个数组,一个存储数列一个存储价格就好,但是记得把min这个最小价格一开始初始化的大一点
#include <stdio.h>
int a[10]={0},b[10]={0};//a数组用于存储数量,b数组用于存储价格
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<3;i++)
{
scanf("%d%d",&a[i],&b[i]);
}
int count=0;
int price=0,min=1000000000;//定义总价price变量还有要作为对比的最小值min
for(int i=0;i<3;i++)
{
count=n/a[i];//这个是看要买多少盒,因为不能独立包装,只能按一整盒买
if(n%a[i]!=0)//判断是否会整除,不能整除就再加一盒
{
count++;
}
price=count*b[i];//价格=数量*单价
if(price<min)//如果此时的价格小于最小值,就更新最小值
{
min=price;
}
}
printf("%d\n",min);//输出最小值(最少得价格)
return 0;
}
题目:小鱼的航程
有一只小鱼,它平日每天游泳 250250 公里,周末休息(实行双休日),假设从周 x 开始算起,过了 n 天以后,小鱼一共累计游泳了多少公里呢?
输入:
输入两个正整数 x,n,表示从周 x 算起,经过 n 天。
输出:
输出一个整数,表示小鱼累计游泳了多少公里。
样例输入:
3 10
样例输出:
2000
说明/提示
数据保证,1≤x≤7,1≤n≤1e6。
解题思路:这道题需要想清楚整个过程,理解上去很简单,但是写代码的时候可能会出现小错误,那么直接放代码了
#include <stdio.h>
int main()
{
unsigned long long x,n;//天数已经很大了,所以尽量给数据开的大一点
scanf("%llu%llu",&x,&n);
unsigned long long sum=0;//用于计算总航程的变量sum
for(int i=0;i<n;i++)
{
if(x>0&&x<6)//当天数处于周一到周五的时候
{
sum+=250;//每天航程+250
x++;//轮到下一天
}
else//当天数处于周六周天的时候
{
x++;//只会增加天数,航程不变
}
if(x==8)//当过完周天,x++后会变成8,当x==8时说明下一次该轮到星期一了,所以x=1
{
x=1;
}
}
printf("%llu\n",sum);
return 0;
}
题目:三角函数
输入一组勾股数a,b,c(a!=b!=c),用分数格式输出其较小锐角的正弦值。(要求约分。)
输入格式
一行,包含三个正整数,即勾股数 a,b,c(无大小顺序)。
输出格式
一行,包含一个分数,即较小锐角的正弦值
解题思路:这题要求输入一组勾股数,勾股数就是直角数很简单,只需要给a,b,c进行排序,然后找出最小和最大的两个数就可以输出较小的锐角的正弦值,但是问题在于如何约分:因此我们会有两种方法,这两种方法我就放在另一篇我的博客(今天晚上就会发表出来)里面了,大家可以自行查阅
#include<stdio.h>
int gcd(int a,int b)//实现求最大公因数的辗转相除法,这个是递归的写法
{
if(b==0)
{
return a;
}
return gcd(b,a%b);
}
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
int t;
if(a>b)//用来对a,b,c,进行排序
{
t=a;
a=b;
b=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
if(a>b)
{
t=a;
a=b;
b=t;
}
int z=gcd(a,c);//z就是通过调用gcd函数求出的最大公因数
a=a/z;//实现约分的操作
c=c/z;
printf("%d/%d",a,c);
return 0;
}