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);
}
Răspunsuri la întrebare
Răspuns de
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
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Limba rusă,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
#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);
}