美文网首页
数值问题(加减乘除、开方、平方)

数值问题(加减乘除、开方、平方)

作者: juexin | 来源:发表于2017-04-19 11:01 被阅读0次

不用四则运算做加法
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

class Solution {
public:
    int Add(int num1, int num2)
    {
        int sum;
        int carry;
        while(num2)
        {
            sum = num1^num2;   //换了种形式而已,sum + carry = num1 + num2
            carry = (num1&num2)<<1;
            num1 = sum;  
            num2 = carry;
        }
        return num1;
    }
};

**29. Divide Two Integers **
Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
代码如下:

class Solution {
public:
    int divide(int dividend, int divisor) {
        long a = abs((long)dividend);
        long b = abs((long)divisor);
        long result = 0;
        while(a>=b) //减到最后的余数小于b为止
        {
            long c = b;  //一轮一轮的减
            int i = 0;
            while(a>=c)
            {
                a = a - c;
                result += 1<<i;
                i++;
                c = c<<1;
            }
        }
        if((dividend>0&&divisor<0)||(dividend<0&&divisor>0))
          result = -result;
        return (int)result;  
    }
};

**50. Pow(x, n) **
Implement pow(x, n).
代码如下:

class Solution {
public:
    double myPow(double x, int n) {
        int flag = 1;
        if(x>-0.000001&&x<0.000001)
          return 0;
        if(n==0)
          return 1;
        if(n<0)
          flag = -1;
        
        if(n%2==0)
        {   if(flag>0)
              return myPow(x,(flag*n)/2)*myPow(x,(flag*n)/2);
            else
              return 1/(myPow(x,(flag*n)/2)*myPow(x,(flag*n)/2));
        }

        else
        {
            if(flag>0)
              return x*myPow(x,((flag*n)-1)/2)*myPow(x,((flag*n)-1)/2);
            else
              return 1/(x*myPow(x,((flag*n)-1)/2)*myPow(x,((flag*n)-1)/2));
        }
    }
};

**69. Sqrt(x) **
Implement int sqrt(int x).
Compute and return the square root of x.

class Solution {
public:
    int mySqrt(int x) {
        if(x<=0)
          return 0;
        
        int start = 1;
        int end = x;
        int mid = 0;
        while(start<=end)
        {
            mid = (start + end)>>1;
            if(mid>x/mid)
              end = mid - 1;
            else if(mid<x/mid)
              start = mid + 1;
            else
              return mid;
        }
        return end;
    }
};

相关文章

  • 数值问题(加减乘除、开方、平方)

    不用四则运算做加法题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 **29...

  • Excle常用函数

    常用加减乘除用法公式 =数值1+数值2=数值1-数值2=数值1*数值2=数值1/数值2 常用函数及用法 sum 求...

  • JS数值

    数值 100 整型 3.14 浮点型 3.14e7 科学计数法 0xfa1b 16进制 在数值中除了加减乘除求余外...

  • excel学习-拆分数据

    如下图,将单元格内容按数值和单位分开方便计算 浓度和总量可以通过 功能直接拆分 然后是将浓度的数值和单位分开,数值...

  • NSDecimalNumber基本使用

    作用 NSDecimalNumber继承自NSNumber,用于对浮点型数据的精度计算 加减乘除以及乘方 数值处理

  • 提升JS质量—1. JS的Numbers

    写在前面 JS中涉及到的对数值的操作:算数运算(加减乘除)+逻辑运算(比较)+转换类型常见的坑有 纯数值运算:值域...

  • 第130章 SQL函数 SQRT

    [toc] 第130章 SQL函数 SQRT 返回给定数值表达式的平方根的数值函数。 大纲 参数 numeric-...

  • iOS-精度数据处理NSDecimalNumber

    作用 用于对浮点型数据的精度计算 用法 加减乘除以及乘方 加 减 乘 除 乘方 数值处理 NSDecimalNum...

  • SAS常用函数

    1.数值相关的函数 obs(x):返回绝对值。 exp(x):返回x的指数值。sqrt(x):返回x的平方。 ...

  • 492. Construct the Rectangle

    我自己的写得很丑很慢,开平方计算太慢了,没什么好说的,看看人家的。 我的解法 人家的解法 平方比开方运算快得多= =

网友评论

      本文标题:数值问题(加减乘除、开方、平方)

      本文链接:https://www.haomeiwen.com/subject/iumczttx.html