求救急
查看原帖
求救急
550880
谁家小迷妹鸭楼主2021/8/20 23:42

填空题

把一个数字表示成2进制的表示法,
例如137可以表示为2(7)+2(3)+2(0),其中2(7)表示27次方。
7可以继续表示为2(2)+2+2(0),
3可以继续表示为2+2(0)。
所以137可以表示为2(2(2)+2+2(0))+2(2+2(0))+2(0)。
#include <iostream>
#include <string>
using namespace std;
int n;
string IPS(int n) {
    int rank[16], k = 0, k2 = 0;
    while(____1____) {
        if(n%2==1)	k2++;
        rank[++k] = n%2;
        n /= 2;
    }
    string ans = "";
    for(int i=k; i>=1; i--) {
        if(rank[i]) {
            if(i==2)
                ans += "2";
            else if(i==1&&rank[i]!=0)
                ans += "2(0)";
            else
                ans = ans+"____2____("+IPS(____3____)+")";
            if(k2!=1) {
                ans += "____4____";
                k2 ____5____;
            }
        }
        
    }
    return ans;
}
int main() {
    cin >> n;
    cout << IPS(n);
    return 0;
}
2021/8/20 23:42
加载中...