Pergunta de entrevista da empresa Meta

Implement the div operator without using / or %

Respostas da entrevista

Sigiloso

5 de fev. de 2012

int divide(int m, int n) { int u, res = 0; bool neg = false; if (n == 0) return NaN; if (m = 0; k--) if (m >= n << k) m -= n << k, res += 1 << k; return neg ? -res : res; }

3

Sigiloso

22 de mai. de 2012

public class Solution { public int divide(int dividend, int divisor) { // Start typing your Java solution below // DO NOT write main() function if (divisor == 0) { return -1; } else if (dividend == 0 || divisor == 1) { return dividend; } else if (dividend == divisor) { return 1; } else if (dividend == -divisor) { return -1; } else if (divisor == Integer.MIN_VALUE) { return 0; } boolean neg = false; if ((dividend 0) || (dividend > 0 && divisor = 0; i--) { if ((divisor dividend) { continue; } q |= (1 << i); dividend -= (divisor << i); } q += extra; return neg ? -q : q; } }

Sigiloso

25 de ago. de 2013

private static int Div2(int dividend, int divisor, int multi) { int remainder = dividend - (multi * divisor); if (remainder > 0) { return Div2(remainder, divisor, multi * 2) + multi; } else if (remainder == 0) { return multi; }else { if (multi > 1) { return Div2(dividend, divisor, multi / 2); } else { return 0; } } }

Sigiloso

23 de abr. de 2011

Let's assume we only need to worry about int. public static int Div(int divisor, int dividend) { if (divisor==0) { return -1;//let's not worry about it for now } int pDividend = Math.abs(dividend); int pDivisor = Math.abs(divisor); int quotient = 0; while(pDividend>pDivisor) { pDividend-=pDivisor; quotient++; } quotient = (divisor>0&&dividend0)? quotient*-1:quotient; System.out.println(dividend+"/" + divisor +"=" + quotient + " (abs)mod:" + pDividend); return quotient; }

Sigiloso

31 de mar. de 2011

Keep subtracting divisor from dividend while it is smaller than it.

1

Sigiloso

17 de nov. de 2010

binary shift

3