宣传一下$\Huge\color{green}{春季每日一题题解}$
宣传一下$\Huge\color{skyblue}{USACO}$月赛打卡活动题解汇总
我就知道USACO的题很狡猾!
不要被题目误导了,将二进制读入之后乘17再转化为二进制……
那代码长度可能会特别长……
直接在二进制状态下乘17的二进制即可,用高精度。
#include<bits/stdc++.h>
using namespace std;
string a0, b0;
int a[1010], b[1010], ans[1010];
int main() {
cin >> a0;
int l1 = a0.size(), l2 = 5;
for (int i = 0; i < l1; i++) a[l1 - i - 1] = a0[i] - 48;
b[0] = b[4] = 1; b[1] = b[2] = b[3] = 0;
int l3 = l1 + l2 - 1;
for (int i = 0; i < l1; i++)
for (int j = 0; j < l2; j++)
ans[i + j] += a[i] * b[j];
for (int i = 0; i <= l3; i++) if (ans[i] > 1) ans[i + 1] += ans[i] >> 1, ans[i] %= 2;
while (ans[l3]) l3++;
for (int i = l3 - 1; i >= 0; i--) cout << ans[i];
return 0;
}
%%%%%