找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 554|回复: 1
收起左侧

[资源分享] 14: Multiply Two Integers Without Using *

[复制链接]

19

主题

2

精华

83

积分

资深会员

Rank: 2

积分
83
发表于 10-4-2015 11:14 AM | 显示全部楼层 |阅读模式

亲!马上注册或者登录会查看更多内容!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

经典位操作,需要注意的地方是:
(1)入参的范围是10**9
(2)入参是int,是在移位时要强制转型成long long
  1. class Solution {
  2. public:
  3.         typedef long long LL;
  4.         LL add(LL a, LL b){
  5.                 while(a){
  6.                         LL c = (a & b) << 1;
  7.                         b = a ^ b;
  8.                         a = c;
  9.                 }
  10.                 return b;
  11.         }
  12.         long long aMultiplyb(int a,int b) {
  13.                 LL p = 0;
  14.                 for(int i = 0; i < 31; ++i){
  15.                         if((1 << i) & b) p = add(p, LL(a) << i);
  16.                 }
  17.                 return p;
  18.         }
  19. };
复制代码


10

主题

0

精华

58

积分

资深会员

Rank: 2

积分
58
发表于 2-21-2016 02:35 PM | 显示全部楼层
多谢!!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表