1. 程式人生 > 其它 >位元組真題:機器人跳躍問題

位元組真題:機器人跳躍問題

牛客連結: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 }
心之所願,永不相忘