编程一小时2023.4.23

1.

#include <bits/stdc++.h>
using namespace std;

string a, s;
int b[1005], t, c[1005];

void division() {
for (int i = t - 1; i >= 0; i--) {
if (b[i] % 2)
b[i - 1] += 10;
b[i] /= 2;
}
while (b[t - 1] == 0)
t--;
}

void mult() {
for (int i = t - 1; i >= 0; i--) {
c[i] *= 2;
if (c[i] > 9) {
c[i] -= 10;
c[i + 1]++;
if (i + 1 == t)
t++;
}
}
}

void p() {
c[0]++;
for (int i = 0; c[i] > 9; i++) {
c[i] -= 10, c[i + 1]++;
if (i + 1 == t)
t++;
}
}

int main() {
cin >> a;
t = a.size();
for (int i = 0; i < t; i++)
b[i] = a[a.size() - i - 1] - '0';
while (t > 1 || t == 1 && b[0] > 0) {
s = char(b[0] % 2 + '0') + s;
b[0] -= b[0] % 2;
division();
}
reverse(s.begin(), s.end());
t = 1;
for (int i = 0; i < s.size(); i++) {
mult();
if (s[i] == '1')
p();
}
for (int i = t - 1; i >= 0; i--)
cout << c[i];
cout << endl;
return 0;
}

2.

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
string s;
while (cin >> s)
{
int sum = 0;
for (int i = s.length() - 1, j = 0; i >= 0; i --, j ++)
{
sum += (s[i] - '0') * (pow(2, j + 1) - 1);
}
cout << sum << endl;
}

return 0;
}

posted @   Verneyyx  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示