牛客链接: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 }