牛客链接:https://www.nowcoder.com/question/next?pid=16516564&qid=362290&tid=49706822
就是一个数学推导的问题,很简单
1 // 感觉就是个数学推理的样子
2 // E(k)=1/2[E(k+1)+H(k+1)]
3 // 然后E(k+1)越小,E(k)越小,且E(k)必为整数,那么设E(N)=0,然后E(k)向上取整就可以得到E(0)
4 #include<iostream>
5 #include<vector>
6 using namespace std;
7
8 int getRes(vector<int> init,int n){
9 int E_k_plus=0;
10 int E_k;
11 for(int i=0;i<n;++i){
12 int tmp=E_k_plus+init[n-i-1];
13 if(tmp%2==0) E_k=tmp/2;
14 else E_k=tmp/2+1;
15 E_k_plus=E_k;
16 }
17 return E_k;
18 }
19
20
21 int main(){
22 int n;
23 cin>>n;
24 vector<int> init;
25 for(int i=0;i<n;++i){
26 int tmp;
27 cin>>tmp;
28 init.push_back(tmp);
29 }
30 cout<<getRes(init,n);
31 return 0;
32 }
还有前一题:找零;也很简单,就放一起了
牛客链接:https://www.nowcoder.com/question/next?pid=16516564&qid=362296&tid=49706822
1 // 真有这么简单?
2 #include<iostream>
3 #include<vector>
4 using namespace std;
5
6 int getRes(int init){
7 int res=0;
8 int retail=1024-init;
9 int dis[4]={64,16,4,1};
10 int i=0;
11 while(retail>0){
12 res+=retail/dis[i];
13 retail=retail%dis[i];
14 i++;
15 }
16 return res;
17 }
18
19 int main(){
20 int init;
21 cin>>init;
22 cout<<getRes(init);
23 return 0;
24 }
心之所愿,永不相忘