Informatică, întrebare adresată de vladphantom, 8 ani în urmă

Buna, am si eu nevoie de ajutor la o problema de informatica: problema #1505 de pe pbinfo. Am o rezolvare de 60 de puncte.. ce as putea sa modific sa devina de 100 de puncte?

#include
#include

using namespace std;

ifstream in("b210.in");
ofstream out("b210.out");

short a[31];

void binary(int n)
{
int im, i, x, smax=n;
for (im = 0; n > 0; im++)
{
a[im] = n % 2;
n = n / 2;
}
int m = im - 1;
for (int k = 1; k <= m; k++)
{
x = a[m];
for (i = m; i >= 0; i--)
{
a[i + 1] = a[i];
}
a[1] = x;
int s = 0;
s = a[0] + 0;
for (int i = 1; i < im; i++)
{
s = s * 2 + a[i];
}
if (s > smax)
smax = s;
}
out << smax;
}

int main()
{
int n;
in >> n;
binary(n);
}


vladphantom: #include
#include

using namespace std;

ifstream in("b210.in");
ofstream out("b210.out");

short a[31];

void binary(int n)
{
int im, i, x, smax=n;
for (im = 0; n > 0; im++)
{
a[im] = n % 2;
n = n / 2;
}
int m = im - 1;
for (int k = 1; k <= m; k++)
{
x = a[m];
for (i = m; i >= 0; i--)
{
a[i + 1] = a[i];
}
a[1] = x;
int s = 0;
s = a[0] + 0;
for (int i = 1; i < im; i++)
{
s = s * 2 + a[i];
}
if (s > smax)
smax = s;
}
out << smax;
}

int main()
{
int n;
in >> n;
binary(n);
}
vladphantom: #include si #include
vladphantom: fstream si iostream

Răspunsuri la întrebare

Răspuns de pmarian98
0

#include <fstream>

#include <iostream>

using namespace std;

ifstream fin("b210.in");

ofstream fout("b210.out");

int n, m;

int main()

{int nr=0, p=1, i, uc;

cin>>n;

 

/** Transform nr n in b2, memorez nr de cifre de 0 si 1 "semnificative"  

(mai putin primul 1 ) care apare intotdeauna intr-un numar scris in b2  .*/

 

while ( p*2 <= n) p*=2, nr++;

//cout<<nr<<" ";

m=n;

///permutari circulare ale numarului n in b2

for (i=0; i<nr; i++)

    {

      uc=n%2;

      n/=2;

      n=n+uc*p;

      if (n>m) m=n;

    }

cout<<m<<'\n';

fout.close();

return 0;

}

Alte întrebări interesante