Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<math.h>
- #include<vector>
- using namespace std;
- int main(){
- long long int correct;
- vector<int> path;
- long long int time=1;
- int n=0, i=0;
- bool flag=true;
- cin>>correct;
- while(flag==true&&correct!=1){
- if((correct-1)<pow(10,i)){n=i; flag=false;}
- i++;
- }
- if(correct==1)n=1;
- long long int max=pow(10,n);
- long long int min=0;
- long long int guess=max/2;
- path.push_back(guess);
- //looping
- while(guess!=correct&&min!=correct){
- //cout<<"debug: max | guess | min "<<max<<"|"<<guess<<"|"<<min<<endl;
- if(correct>guess){
- min=guess;
- if((guess+max)%2==0)guess=(max+guess)/2;
- else if((guess+max)%2==1)guess=(max+1+guess)/2;
- }
- else if(correct<guess){
- max=guess;
- if((guess+min)%2==0)guess=(min+guess)/2;
- else if((guess+min)%2==1)guess=(min+1+guess)/2;
- }
- path.push_back(guess);
- time++;
- }
- //print result
- if(time!=1)cout<<time<<" times : ";
- else if(time==1)cout<<time<<" time : ";
- for(int i=0;i<path.size();i++){
- cout<<path[i];
- if(i!=path.size()-1)cout<<"->";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement