K*****k 发帖数: 430 | 1 思路是简单的:
比如100除以3,我只要从100开始,不停地减去3,直到结果小于3;或者从0开始,不停
地加上3,直到结果大于等于100,用一个计数器统计加减的次数就可以了。
难道是要考查
1) 你处理除数为0的情况了吗?
2)你处理除数为1的情况了吗?
3)你处理被除数小于除数的情况了吗?
4)你处理被除数或者除数为负数的情况了吗?
5)你处理余数了吗?尤其是4)的情况下 |
b*******y 发帖数: 232 | 2 加减法不是只加减3吧
这样不停减3比较没有效率
二分查找法比较迅速
【在 K*****k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 思路是简单的: : 比如100除以3,我只要从100开始,不停地减去3,直到结果小于3;或者从0开始,不停 : 地加上3,直到结果大于等于100,用一个计数器统计加减的次数就可以了。 : 难道是要考查 : 1) 你处理除数为0的情况了吗? : 2)你处理除数为1的情况了吗? : 3)你处理被除数小于除数的情况了吗? : 4)你处理被除数或者除数为负数的情况了吗? : 5)你处理余数了吗?尤其是4)的情况下
|
x***i 发帖数: 64 | 3 是不是应该考虑
a[0]=3
100-3=97, 3+3=6, a[1]=6
97-6=91, 6+6=12, a[2]=12
...
if positive->positive, minus a[k+1]
if positive->negative, add a[k-1]
if neg->+, minus a[k-1]
if neg->neg, add a[k-1]
sth like binary search
【在 K*****k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 思路是简单的: : 比如100除以3,我只要从100开始,不停地减去3,直到结果小于3;或者从0开始,不停 : 地加上3,直到结果大于等于100,用一个计数器统计加减的次数就可以了。 : 难道是要考查 : 1) 你处理除数为0的情况了吗? : 2)你处理除数为1的情况了吗? : 3)你处理被除数小于除数的情况了吗? : 4)你处理被除数或者除数为负数的情况了吗? : 5)你处理余数了吗?尤其是4)的情况下
|
q****x 发帖数: 7404 | 4 不行。
【在 K*****k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 思路是简单的: : 比如100除以3,我只要从100开始,不停地减去3,直到结果小于3;或者从0开始,不停 : 地加上3,直到结果大于等于100,用一个计数器统计加减的次数就可以了。 : 难道是要考查 : 1) 你处理除数为0的情况了吗? : 2)你处理除数为1的情况了吗? : 3)你处理被除数小于除数的情况了吗? : 4)你处理被除数或者除数为负数的情况了吗? : 5)你处理余数了吗?尤其是4)的情况下
|
s******n 发帖数: 226 | 5 练习一下,第一次写的时候居然有bug,郁闷死了,这可怎么办呢~~~
// some corner case and sign process
long prev = 0;
long cur = y;
int k=0;
while(cur
prev = cur;
cur = cur<<1;
k++;
}
if(cur==x)
return (1<
long l = 1<<(k-1);
long r = 1<
while(true){
if(l>=r) return l;
long mid = (r+l)>>1;
long mid_v = (cur+prev)>>1;
if(x == mid_v) return mid;
if(x < mid_v){
r = mid;
cur = mid_v;
}else{
l = mid;
prev = mid_v;
}
} |