day20--小狗暴躁--2.24
习题概述
题目描述
在一个小村子里,邮递员、送奶工、垃圾清理工每天早晨都面临着同样的难题:18 号房子的门前有两条看门狗。他们所不知道的是,这两条狗的表现是有迹可循的。
当一天开始时,其中一条狗会先暴躁 a 分钟,然后安静 b 分钟,而另一条狗则会先暴躁 c 分钟,然后安静 d 分钟。这两条狗在一天中会无限地重复上述行为。
给定这三个人到达 18 号房子的时刻,请求出该时刻有几条狗是处于暴躁状态的。
输入格式
第一行有四个整数,分别表示a,b,c,d,其意义见【题目描述】。
第二行有三个整数,分别表示邮递员到达的时刻 p,送奶工到达的时刻 m 和垃圾清理工到达的时刻 g。
输出格式
输出三行每行一个字符串,依次表示邮递员、送奶工、垃圾清理工到达时有几条狗处于暴躁状态。
·如果没有狗处于暴躁状态,输出 none
。
·如果恰好有一条狗处于暴躁状态,输出 one
。
·如果两条狗都处于暴躁状态,输出 both
。
代码部分
#include<bits/stdc++.h>
using namespace std;
int a,b,c,d,p[10];
string check(int x){
if(0<x%(a+b)&&x%(a+b)<=a&&0<x%(c+d)&&x%(c+d)<=c){
return "both";
}
if((x%(a+b)>a||x%(a+b)==0)&&(x%(c+d)>c||x%(c+d)==0)){
return "none";
}
else{
return "one";
}
}
int main(){
cin>>a>>b>>c>>d>>p[1]>>p[2]>>p[3];
for(int i=1;i<=3;++i){
cout<<check(p[i])<<endl;
}
return 0;
}
心得体会
1.这道题要使用%对时间点进行取模运算,由于是循环周期函数。对于一个时间点t,以及给定的a,b,c,d;当t模a+b的余数>0且≤a时(此时已经过了整数个周期),第一只狗是暴躁的,否则它不暴躁。第二只狗同理,因此最后算一下一共几只狗暴躁。最后将上面的思路转换为代码后打包在函数里,然后调用三次即可。
2.check(p[i])
的意思就是将 p[i]
传递给 check
函数,判断该时间点有几条狗处于暴躁状态,并返回结果。三个时间点分别保存在数组 p
的不同元素中,分别为 p[1]
、p[2]
和 p[3]
。
day20--津津的不高兴程度--2.24
习题概述
题目描述
津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每天妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。
这次与 NOIp2004 普及组第一题不同的是:假设津津不会因为其它事不高兴,但是她的不高兴会(当然高兴也会)持续到第二天。请你帮忙检查一下津津以后 n 天的日程安排,看看以后 n 天她会不会不高兴(计算方法:用昨天不高兴程度加上今天上课总时间减去 8 后得到的数作为今天不高兴程度);输出以后 n 天结束后不高兴程度和是多少。
输入格式
第一行共一个数 n。
第二行至第 n+1 行,每行两个数,表示这天上学时间和课外补习班时间。
输出格式
一个数,这 n 天过后的不高兴程度和。
代码部分
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[100],b[100];
int n,i,zong=0,bu=0;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
bu=bu+a[i]+b[i]-8;
zong+=bu;
}
cout<<zong;
return 0;
}
心得体会
注意:bu=bu+a[i]+b[i]-8; zong+=bu; 这部分代码!!!还是需要一个总体的来整合 。