avatar
推荐两篇北美故事# Biology - 生物学
T*7
1
☆─────────────────────────────────────☆
glamorgirl (glamorgirl) 于 (Wed Jun 10 06:49:23 2009, 美东) 提到:
别人家的宝宝张的不好看,我还要虚伪的说张的真好看。其实跟他爸长得一样黑不溜秋的,大饼子脸,小蜜蜂眼。一点不可爱。他们家还没有给孩子穿衣服,裸露着恶心的小鸡鸡。
唉, 当时真不想说话,但是还要说好看,回家看着镜子对自己说我长大了!
☆─────────────────────────────────────☆
kira (Shonen) 于 (Wed Jun 10 07:35:15 2009, 美东) 提到:
不用说好看
就说看这孩子多精神,长得像孩子爸爸还是妈妈之类的
家长就爱听这个

秋的,大饼子脸,小蜜蜂眼。一点不可爱。他们家还没有给孩子穿衣服,裸露着恶心的
小鸡鸡。
☆─────────────────────────────────────☆
benchmark (maine) 于 (Wed Jun 10 08:54:11 2009, 美东) 提到:
avatar
d*u
2
这道题也挺经典的,做乘法比较简单
假设输入是正整数,如果不是要处理一下
int multiply(int a, int b){
if(a==0 ||b==0) return 0;
if(a==1) return b;
if(b==1) return a;
int r =0;
while(b>0){
if(b%2==1) r+=a;
a<<=1;
b>>=1;
}
return r;
}
问题除法的话怎么做呢?另外,怎么在parallel的环境下scale呢?
请指教,谢谢!
avatar
p*2
4

是不是需要处理一下负数?

【在 d******u 的大作中提到】
: 这道题也挺经典的,做乘法比较简单
: 假设输入是正整数,如果不是要处理一下
: int multiply(int a, int b){
: if(a==0 ||b==0) return 0;
: if(a==1) return b;
: if(b==1) return a;
: int r =0;
: while(b>0){
: if(b%2==1) r+=a;
: a<<=1;

avatar
h*c
5
为啥没见过白人写这种文章?
avatar
S*t
6
会做乘法就肯定可以做除法啊……
你这个乘法做的方法就是展开成二进制然后逐次加然后移位,语法有点小问题
除法你直接用乘法去二分找结果就可以了

【在 d******u 的大作中提到】
: 这道题也挺经典的,做乘法比较简单
: 假设输入是正整数,如果不是要处理一下
: int multiply(int a, int b){
: if(a==0 ||b==0) return 0;
: if(a==1) return b;
: if(b==1) return a;
: int r =0;
: while(b>0){
: if(b%2==1) r+=a;
: a<<=1;

avatar
A*y
7
Never heard of David Ramsey.

【在 h**c 的大作中提到】
: 为啥没见过白人写这种文章?
avatar
p*2
8
int divide(int a, int b) // return c=a/b;
{
if (b == 0)
throw new ArithmeticException();
boolean neg = false;
if (a < 0)
neg = !neg;
if (b < 0)
neg = !neg;
a = Math.abs(a);
b = Math.abs(b);
int d = 0;
while (b << d <= a)
{
d++;
}
int c = 0;
for (int i = d; i >= 0; i--)
{
if (b << i <= a)
{
c |= 1 << i;
a -= b << i;
}
}
if (neg)
c = -c;
return c;
}
avatar
d*m
9
因为你只混买买提?

【在 h**c 的大作中提到】
: 为啥没见过白人写这种文章?
avatar
d*u
10
请问在parallel环境下怎么scale呢?
楼上程序运行了一下,结果时对的。。。。谢谢!
avatar
h*c
11
Stormfront上也没见白人为了读个phd唧唧歪歪

【在 d********m 的大作中提到】
: 因为你只混买买提?
avatar
d*u
12
多谢,语法纠正了。。。

【在 S******t 的大作中提到】
: 会做乘法就肯定可以做除法啊……
: 你这个乘法做的方法就是展开成二进制然后逐次加然后移位,语法有点小问题
: 除法你直接用乘法去二分找结果就可以了

avatar
p*2
13
刚才上leetcode上run了一下,timeout呀。1337过来说一下吧。我search半天没知道他
的点评。
avatar
i*e
14
while (b << d <= a)
应该是这里死循环了。
当 a 很大的时候,bit左移就会产生溢出,而成为负数。一直死循环下去。

【在 p*****2 的大作中提到】
: 刚才上leetcode上run了一下,timeout呀。1337过来说一下吧。我search半天没知道他
: 的点评。

avatar
i*e
15
还有要考虑 abs 会产生的溢出。
avatar
p*2
16

多谢。pass了。

【在 i**********e 的大作中提到】
: while (b << d <= a)
: 应该是这里死循环了。
: 当 a 很大的时候,bit左移就会产生溢出,而成为负数。一直死循环下去。

avatar
t*6
17
while ( b << digit <= a )
-》
while ( (a >> digit) > b)
right?

【在 p*****2 的大作中提到】
:
: 多谢。pass了。

avatar
c*t
18
北京二爷,你是怎么改的,能不能把你的代码更新一下。

【在 p*****2 的大作中提到】
:
: 多谢。pass了。

avatar
p*2
19

就是改成long了。
public int divide(int dividend, int divisor) // return c=a/b;
{
long a = dividend;
long b = divisor;
if (b == 0)
throw new ArithmeticException();
boolean neg = false;
if (a < 0)
neg = !neg;
if (b < 0)
neg = !neg;
a = Math.abs(a);
b = Math.abs(b);
int d = 0;
while (b << d <= a)
{
d++;
}
int c = 0;
for (int i = d; i >= 0; i--)
{
if (b << i <= a)
{
c |= 1 << i;
a -= b << i;
}
}
if (neg)
c = -c;
return c;
}

【在 c*********t 的大作中提到】
: 北京二爷,你是怎么改的,能不能把你的代码更新一下。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。