【题解】HD2016.X1,HD2016.X3,HD2016.X4,HD2016.X5
[HD2016.X1] 价钱统计
题目描述
夏天到了,超市里摆满了各种各样的应季水果。现在知道:西瓜的价钱是每斤 1.2 元;桃子的价钱是每斤 3.5 元;葡萄的价钱是每斤 4.5 元;苹果的价钱是每斤 5 元。
现在分别给出上述四种所购买的斤数(均不超过 20),请你编写程序帮助售货员阿姨计算并依次输出顾客购买四种水果需要的钱数以及总钱数。
输入格式
只有一行,包含四个符合题目要求的非负数,依次表示需要购买西瓜、桃子、葡萄和苹果的斤数。
两两之间用一个空格分隔。
输出格式
共有五行,每行仅包含一个数,依次代表购买西瓜、桃子、葡萄、苹果所需的钱数,以及购买四种的总钱数。
所有数据均采取四舍五入保留 1 位小数。
样例 #1
样例输入 #1
4 3 2.1 6
样例输出 #1
4.8
10.5
9.5
30.0
54.8
题解
这道题没啥说的,顺序结构搞定。
注意四舍五入保留两位小数时:\(\{^{\text{if type(float):printf("%.2f",valueName);}}_{\text{if type(double):printf("%.2lf",valueName);}}\)
AC code
#include<bits/stdc++.h>
using namespace std;
int main() {
double a,b,c,d,aa,bb,cc,dd,sum;
cin>>a>>b>>c>>d;
aa=a*1.2,bb=b*3.5,cc=c*4.5,dd=d*5,sum=aa+bb+cc+dd;
printf("%.1lf\n%.1lf\n%.1lf\n%.1lf\n%.1lf",aa,bb,cc,dd,sum);
return 0;
}
[HD2016.X3] 数列计算(分数)
题目描述
有一列数是:4/7,7/11,11/18,18/29,29/47,47/76 ……
请找出这个数列的规律,编写程序计算并输出这个数列的第 N 项(要求是分数形式),并计算这个数列的前N项和。
输入格式
一行一个正整数 N(3≤N≤30) 。
输出格式
共有两行:
第一行如样例中的一个特定格式的分数表示这个数列的第 N 项;
第二行仅包含一个数表示这个数列的前 N 项的和,结果四舍五入保留 2 位小数。
样例 #1
样例输入 #1
6
样例输出 #1
47/76
3.68
题解
第一小问递推和递归都行,但我推荐递归。
递归公式:\(\{^{\text{if n=1:return make_pair(4,7);}}_{\text{else return make_pair(f(n-1).second,f(n-1).second+f(n-1).first);}}\)
第二小问直接多次访问递归函数即可。
AC code
#include<bits/stdc++.h>
using namespace std;
pair<double,double> f(int n) {
if(n==1) {
return make_pair(4.0,7.0);
}
return make_pair(f(n-1).second,f(n-1).second+f(n-1).first);
}
int main() {
int n;
cin>>n;
cout<<f(n).first<<"/"<<f(n).second<<endl;
double ans=0;
for(int i=1;i<=n;i++) {
ans+=f(i).first/f(i).second;
}
printf("%.2lf",ans);
return 0;
}