Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- using namespace std;
- int bin(long long int a[], int n, int t){
- int l=0,d=n-1;
- while(l<d){
- int m=(l+d)/2;
- if(a[m]>t) d=m-1;
- else if( a[m]==t) {
- return m;
- }
- else l=m+1;
- }
- if(a[l]>t) return --l;
- return l;
- }
- int main(){
- string as;
- int k,y;
- cin>>as>>y>>k;
- int n=as.size();
- long long int a[n+1], b[n+1], c[n+1];
- c[0]=1;
- a[1]=1; //nula na kraju
- b[1]=1; //jedan na kraju
- c[1]=2;
- for(int i=2; i<n+1; i++){
- a[i]=a[i-1]+b[i-1];
- b[i]=a[i-1];
- c[i]=a[i]+b[i];
- }
- long long int sum=0;
- for(int i=0; i<n; i++){
- if(as[i]=='1') sum+=c[n-i-1];
- }
- cout<<sum<<endl;
- //drugi dio
- if(k>c[n]-1){
- cout<<"ne postoji";
- return 0;
- }
- vector<int> v;
- while(k>0){
- int p=bin(c, n, k);
- v.push_back(p);
- k=k-c[p];
- }
- int brojac=v.size()-1;
- string kraj="";
- for(int i=0; i<n; i++){
- if(i==v[brojac]){
- kraj="1"+kraj;
- brojac--;
- }
- else kraj="0"+kraj;
- }
- cout<<kraj;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment