2의 차멱 표시(귀속 구해)
이곳의 힌트도 이미 뚜렷하다. 귀속을 하면서 출력을 한다고 하면 귀속을 배우는 나쁜 사람에게는 블로그를 써서 반성하고 보충해야 한다.여기서 우리는 먼저 그것을 2진법으로 바꾼다. 이것은 의심할 여지가 없다. 2진법으로 바뀔 때 1이 2진법에서 나타난 위치를 통계하면서 하나의 수조로 그것을 a[]와 같이 저장하지만 어떻게 귀속을 실현할 것인가. 여기는 137=2^7+2^3+2^0이다. 이때 하나의 수조는 7, 3, 0을 기록했지만 대응하는 7, 3이 조건을 만족시키지 못하면 어떻게 하면 귀속을 사용할 수 있다.7 = 2^2 + 2^1 + 2^0, 이때 조건을 만족시킨다. 대응하는 2, 1, 0을 기록하고 같은 이치 3 = 2^1 + 2^0도 조건을 만족시킨다. 대응하는 1, 0을 기록한다.여기서 또 하나의 중요한 점은 중지 조건이다. 우리가 생각해 보면 그는 표현 형식을 바꿨을 뿐이다. 우리가 기록한 것은 그것의 지수이기 때문이다.
1.만약 a[i]==1이라면 출력은 22입니다.만약 a[i]==2이면 출력은 2(2)3.만약에 a[i]==0, 출력이 2(0)라면 여기까지 말씀드리고 싶은데 코드는 다음과 같습니다.
#include
using namespace std;
void fun(int x);
int main()
{
int n;
cin>>n;
fun(n);
return 0;
}
// x b
void fun(int x)
{
int a[32], i = 0, cnt = 0;
// a ,
// , a , a
while(x != 0)
{
int m = x%2;
if(m == 1)
{
a[cnt] = i; cnt++;
}
x /= 2; i++;
}
for(i = cnt-1; i >= 0; i--)
{
if(a[i] == 0)
printf("2(0)");
else if(a[i] == 1)
printf("2");
else if(a[i] == 2)
printf("2(2)");
else
{
printf("2("); fun(a[i]); printf(")");
}
if(i != 0)
printf("+");
}
}
강조, 이곳의 수조 a[]는 반드시 국부 변수로 재정의되어야 한다. 그렇지 않으면 원래의 값을 수정할 것이다. 여기에서 오랫동안 끊겼는데 왜 틀렸을까...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 백엔드에서 데이터를 트리로 변환하고 맵은 json 트리를 생성하여 백엔드로 되돌려줍니다. (백엔드 변환)java 백엔드, 데이터를 트리로 변환하고,map는 json 트리를 생성하여 전방으로 되돌려줍니다(백엔드 변환) 1. 왜 이런 블로그를 쓰나요? 2.java 백엔드 코드 3. 전환된 데이터는 다음과 유사한 형식으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.