题解:题目中已给公式,用循环求解。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
const int N =50;

int main() {
	char s[N];
	int ans;
	while (scanf("%s", s)) {
		if (s[0] == '0')
			break;
		ans = 0;
		int len = strlen(s);
		for (int i = 0, j = len; i < len; i++, j--)
			ans += (s[i] - '0') * (pow(2, j) - 1);
		printf("%d\n", ans);
	}
	return 0;
}