01 部落人乘法(multi.in/.out/.cpp)
【问题描述】
据说原始部落人以小石子作为计算工具,用减半和倍加运算就能求得任何两个整数的乘积(注意当然不能
用乘号 * 运算)。例如求 13 与 15 乘积的过程是:
13 15
6 30
3 60
1 120
规则是:左边不断除 2,写下商,舍去余数,右边不断加倍,直到左边变 1 为止。取结果的方法是:如果某
行左边是偶数,就划去整个这一行,右边剩下的数相加即可,如上式中舍去与 6 对应的 30,其结果就是:
13*15=15+60+120=195
请编程模拟他们的方法求输入两数的乘积,并以上式输出结果。
【输入说明】:两个整型数字 n,m
【输出说明】:输出结果
【输入】:
13 15
【输出】:
13*15=15+60+120=195
【数据范围】
(2≤n,m≤40000)
【核心思想】
1、 基本模拟题,按题意的过程模拟
2、 Mod2 判定余数
3、 注意输出格式
【解析】
这题就是个简单的小模拟,没什么好说的
【核心代码】
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,c,i;
cin>>a>>b;
c=a*b;
cout<<a<<'*'<<b<<"="; //保留格式
while(a!=1)
{
if(a%2) cout<<b<<'+'; //商为基数保留,偶数省略
a/=2;
b*=2;
}
cout<<b<<"="<<c;
return 0;
}
02 拼正方形(square.in/.out/.cpp)
【问题描述】
现有若干根长度均为
1
厘米的小木棍,用
4
根可以拼成一个边长
1
厘米的正方形
(
称为单位正方形
)
,而用 7 根和
10
根小木棍则可以分别拼出两个和三个单位正方形
编程计算用这样的方法拼出
N
个单位正方形需要多少根木棍?要求用最少的根数,例如:
4
个单位正方形,可以用 12
根或
13
根小木棍,最少需
12
根。
输入
的值
,输出拼出 N
个单位正方形所用的最少木棍数。
【输入说明
】
:
一行整型数字表示正方形的个数
N
【
输出说明
】
:
所用的最少木棍数
【
输入
】
:
4
【
输出
】
:
12
【
数据范围
】
(1
≤
n
≤
10^9)