曾格的github

字节真题:机器人跳跃问题

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

 

posted @ 2021-11-02 22:02  曾格  阅读(40)  评论(0编辑  收藏  举报
Live2D