소녀는 보드에 홀수와 짝수로 N 개의 숫자를 쓴 다음 짝수를 수정하고 이진 표현을 왼쪽에서 오른쪽으로 반전하고 각각을 우수. 같은 코드를 작성하십시오.C에서 짝수의 비트 반전
int a[100000];
while (t != 0) // t is the number in which input is taken
{
k = t & 1;
if (k == 1)
a[i] = 0; // a is the array in which bits of new number will be stored
else
a[i] = 1;
i++;
t = t >> 1;
}
for (j = i; j >= 0; j--)
{
if (a[j] == 1)
{
num = num + pow(2,j)*a[j]; // num is the number to be formed
}
}
cout<<num<<"\n";
하지만 내 대답은 8 예를 들어, 일부 값에 대한 잘못된 나옵니다, 그것은 7 출력 :
0 <= n <= 10^7
나는 내 일부 코드는 다음과 같습니다 곳,에 대한 코드를했다. 이게 뭐가 잘못 되었 니? 감사!
해결 링크 :
http://www.spoj.com/problems/EC_CONB/
편집 :
while (t != 0)
{
k = t & 1;
if (k == 1)
a[i] = 0;
else
{
a[i] = 1;
num = num + pow(2,i);
}
i++;
t = t >> 1;
}
cout<<num<<"\n";
}
이 여전히 동일한 문제를 도시 7.
(8) 1000 그렇게 7 즉 당신이 0111 기대했던 어떤 가치 정확한지? – parkydr
비트를 반전시키기 위해'~'연산자를 사용하는 대신에 이런 식으로하는 특별한 이유가 있습니까? – ClickRick
죄송하지만, 여기 제가 해결하려고하는 문제의 링크가 있습니다. http://www.spoj.com/problems/EC_CONB/. 여기, 샘플 사례는 다른 것입니다. –