(笔试题)不用除法操作符,实现两个整数的除法
实现 两个 整数 笔试 不用 操作符 除法
2023-09-14 09:00:36 时间
题目:
如题所示
思路:
与上一题要求不一样的是,这里是整数的除法,而不仅仅是正整数,因此需要对输入的两个数的正负性进行判断
代码:
#include <iostream> using namespace std; int myDiv(int a,int b){ if(a==0) return 0; if(a==b) return 1; if(b==1) return a; bool sign=true; // indicate +/-1 int ans=0; // a>0,b<0 if(a>0){ if(b<0){ if(a+b<0) return 0; sign=false; b=-b; } } // a<0,b>0 else if(b>0){ if(a+b>0) return 0; sign=false; a=-a; } // a<0,b<0 else{ if(a-b>0) return 0; sign=true; a=-a; b=-b; } int x,y; while(a>=b){ x=b; y=1; while(a>=(x<<1)){ x<<=1; y<<=1; } a-=x; ans+=y; } return sign?(ans):(-ans); } int main() { unsigned int a=100; unsigned int b=3; cout << myDiv(-a,b) << endl; cout << myDiv(a,-b) << endl; cout << myDiv(-a,-b) << endl; cout << myDiv(a,b) << endl; return 0; }
运行结果:
相关文章
- Java实现 LeetCode 650 只有两个键的键盘(递归 || 数学)
- Java实现 LeetCode 599 两个列表的最小索引总和(使用hash提高效率)
- Java实现 LeetCode 583 两个字符串的删除操作(求最长公共子序列问题)
- Java实现 LeetCode 421 数组中两个数的最大异或值
- Java实现 LeetCode 212 单词搜索 II
- java实现第六届蓝桥杯三羊献瑞
- hbase:用于实现版本文件及配置同步的两个shell脚本
- 实现两个INPUT同步输入
- arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新
- Atitit 异常的实现原理 与用户业务异常
- Python:利用for循环比较两个列表元素的异同进而找出共有元素、各自不同元素并全部导出到csv文件实现代码
- VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的案例应用(启动SolidWorks代码/直接驱动模型代码/路径下模型驱动代码/创建两个文
- DataScience&ML:金融科技之风控领域的CreditRisk+模型(信用风险度量模型)的简介、案例应用(代码实现)之详细攻略
- 编程笔试(解析及代码实现):序列重排之给一个长度为n的序列A,求找出某种排列方式使得相邻两个数的差值之和最大并求出该最大值
- 【已实现】服务器jar包启动脚本、shell脚本
- JS实现双击内容变为可编辑状态
- 【LeetCode Python实现】6. Z 字形变换(中等)
- c语言/c++实现牛顿迭代法求解一元二次方程的两个根
- 剑指 Offer 09. 用两个栈实现队列-双栈实现队列
- 1976. 迪杰斯特拉c语言算法实现
- 例 9.14 声明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,求出大数和小数。
- leetcode 88. 合并两个有序数组 js实现
- (效果二)js实现两个变量值的交换
- 嵌入式linux开发,单网卡绑定多IP,实现多网段的访问
- 使用Flask+MongoDB实现基于REST的接口简单操作
- 【Leetcode刷题Python】剑指 Offer 09. 用两个栈实现队列
- 剑指 Offer 09. 用两个栈实现队列
- 聊聊Netty那些事儿之Reactor在Netty中的实现(创建篇)