[HD2016.X1] 價錢統計 題目描述 夏天到了,超市裡擺滿了各種各樣的應季水果。現在知道:西瓜的價錢是每斤 1.2 元;桃子的價錢是每斤 3.5 元;葡萄的價錢是每斤 4.5 元;蘋果的價錢是每斤 5 元。 現在分別給出上述四種所購買的斤數(均不超過 20),請你編寫程式幫助售貨員阿姨計算並依 ...
[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
題解
這道題沒啥說的,順序結構搞定。
註意四捨五入保留兩位小數時:\(\Huge\{^{\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
題解
第一小問遞推和遞歸都行,但我推薦遞歸。
遞歸公式:\(\huge\{^{\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;
}