新手村-顺序与分支

计算机的智能性开始得以体现,因为计算机能够根据不同的条件选择了。

水水水~

P1422 小玉家的电费 分段

题目描述

夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了。小玉家今天收到了一份电费通知单。小玉看到上面写:据闽价电[2006]27号规定,月用电量在150千瓦时及以下部分按每千瓦时0.4463元执行,月用电量在151~400千瓦时的部分按每千瓦时0.4663元执行,月用电量在401千瓦时及以上部分按每千瓦时0.5663元执行;小玉想自己验证一下,电费通知单上应交电费的数目到底是否正确呢。请编写一个程序,已知用电总计,根据电价规定,计算出应交的电费应该是多少。

Code

分段。

1
2
3
4
5
6
7
8
9
10
#include<bits/stdc++.h>
using namespace std;
int main(){
double bill; cin >> bill;
if(bill <= 150) bill *= 0.4463;
else if(bill<=400) bill = 150*0.4463 + (bill-150)*0.4663;
else bill = 150*0.4463 + (400-150)*0.4663+ (bill-400)*0.5663;
cout << fixed << setprecision(1) << bill <<endl;
return 0;
}

P1085 不高兴的津津 激活函数

题目描述

津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

Code

激活函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<bits/stdc++.h>
using namespace std;

bool activate(int activation){ //激活函数
return activation>8;
}
struct date{
int activation;
int weekday;
};

int main(){
int a,b; date Date;
for(int i = 1; i <= 7; ++i){
cin>>a>>b;
if( Date.activation < activate(a+b)*(a+b)) {
Date.activation = activate(a+b)*(a+b);
Date.weekday = i;
}
}
cout << Date.weekday <<endl;
return 0;
}

P1089 津津的储蓄计划 传播

题目描述

津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。

为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中

例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。

津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。

现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。

Code

传播。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<bits/stdc++.h>
using namespace std;

int main(){
int reserve=0, holding=0, budget, month = 0;
while(++month<=12){
cin>>budget;
reserve += (300 + holding - budget)/100 *100;
holding = (300 + holding - budget)%100;
if(holding < 0 ) {cout<<-month<<endl; break;}
}
if(holding > 0 ) cout << reserve*6/5 + holding << endl;
return 0;
}

P1909 买铅笔 简易背包

题目描述

P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有 3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起见,P老师决定只买同一种包装的铅笔。

商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过n支铅笔才够给小朋友们发礼物。

现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少n支铅笔最少需要花费多少钱。

Code

简易背包?

1
2
3
4
5
6
7
8
9
10
11
12
#include<bits/stdc++.h>
using namespace std;

int main(){
int demand, num, price,result=INT_MAX, cnt=3; cin>>demand;
while(cnt-->0){
cin>>num>>price;
result = min(result, (demand/num+ (demand%num > 0) ) * price); //(demand%num > 0)是整除偏置
}
cout<< result <<endl;
return 0;
}
0%