AcWing 每日一题 2022/5/5【2022. 倍数 17】 在意识到软件开发有很多钱可赚之后,农夫约翰开办了一家小型企业,为当地农业行业的客户编写简短的程序。
他的第一个编程任务对他来说似乎非常简单:他的客户希望他编写一个程序,该程序将数字 N 作为输入,并将 17×N 作为输出。
约翰刚刚写完这个简单的程序,他的客户就惊慌失措的给他打电话,告诉他输入和输出都必须用二进制数字表示,而且这些数字可能很大。
【AcWing|AcWing 每日一题 2022/5/5【2022. 倍数 17】】请帮助约翰完成他的编程任务。
给定一个用二进制表示并且不超过 1000 位的输入数字 N,输出二进制表示下的 17×N。
输入格式
一个不超过 1000 位的二进制数字 N。
输出格式
输出二进制表示下的 17×N。
输入样例:
10110111
输出样例:
110000100111
样例解释
给定数字 10110111 在十进制表示下为 183。
183×17=3111,在二进制表示下为 110000100111。
题目分析
这道题目用 py 好像可以一行代码解决…C++
用 C++ 的话,就是模板高精度乘法(二进制)
#include
#include
#include
#include
#include
#include
#include
#include#define x first
#define y secondusing namespace std;
typedef long long ll;
typedef pair PII;
const int N = 100000;
const int MOD = 1000000007;
const int INF = 0x3f3f3f3f;
int gcd(int a, int b){return b ? gcd(b, a % b) : a;
}vector mul(vector &a,int b)
{
// 存储计算后的数据
vectorc;
// t 表示进位
int t=0;
for(int i=0;
i> a;
vector v;
for(int i = a.size() - 1;
i >= 0;
i -- ) v.push_back(a[i] - '0');
vector ans = mul(v, 17);
for(int i = ans.size() - 1;
i >= 0;
i -- ) cout << ans[i];
return 0;
}
python
print(bin(int(str(input()),2) * 17)[2:])
推荐阅读
- AcWing|AcWing 每日一题 2022/5/6【2012. 一排奶牛】
- SpringMVC|SpringMVC五(springMVC视图)
- #|华为机试第六题(HJ6 质数因子)
- #|华为机试第五题(HJ5 进制转换)
- Software|简单的增删改查及数据分页
- 排序算法|两个基本排序算法【选择排序,冒泡排序】【详解】
- c语言|C语言小游戏---扫雷
- 算法|盘点知识图谱在 5 大智能领域的应用
- Java|Redisson里的“看门狗”居然有这两个“bug”()