两数相除(c语言)

news2024/10/4 11:33:46

1.//给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求 不使用 乘法、除法和取余运算。
//整数除法应该向零截断,也就是截去(truncate)其小数部分。
// 例如,8.345 将被截断为 8 , - 2.7335 将被截断至 - 2 。
//返回被除数 dividend 除以除数 divisor 得到的 商 。
//注意:假设我们的环境只能存储 32 位 有符号整数,其数值范围是[−231, 231 − 1] 。
// 本题中,如果商 严格大于 231 − 1 ,则返回 231 − 1 ;如果商 严格小于 - 231 ,则返回 - 231 。
//示例 1:
//输入: dividend = 10, divisor = 3
//输出 : 3
//解释 : 10 / 3 = 3.33333..,向零截断后得到 3 。
//示例 2 :
//    输入 : dividend = 7, divisor = -3
//    输出 : -2
//    解释 : 7 / -3 = -2.33333..,向零截断后得到 - 2 。

2.我们要知道dividend=count*divisor,然后返回count,就可以了。先判断当dividend >0,divisor=0或者正负1的时候,进行判断,然后判断dividend=0或者正负1的时候,进行判断。然后将dividend,divisor均处理成负数,防止溢出,(注意:被除数绝对值小于除数绝对值)。然后每次相减divisor,count++,res=res+count.(注意:判断dividend是否不于0,如果大于0,说明减多了,有返回一步)。

#include<stdio.h>
int divide(int dividend, int divisor) {
    int res, count;
    int temp;
    int flag = 0;
    //判断当dividend >0&& divisor == -1|| divisor == 1的时候
    if (dividend >0&& divisor == -1|| divisor == 1) {
        if (divisor == -1)
            return -dividend;
        if (divisor == 1)
            return dividend;
    }
    //判断dividend =0
    if (dividend == 0)
        return 0;
    if (divisor == 1)
        return dividend;
    if (divisor == -1)
        return -dividend;

    // 均处理成负数,防止溢出
    if (dividend > 0 && divisor < 0) {
        flag = 1;
        dividend = -dividend;
    }

    if (dividend < 0 && divisor > 0) {
        flag = 1;
        divisor = -divisor;
    }

    if (dividend > 0 && divisor > 0) {
        dividend = -dividend;
        divisor = -divisor;
    }

    if (dividend == divisor) {
        if (flag == 0)
            return 1;
        else
            return -1;
    }

    // 被除数绝对值小于除数绝对值
    if (dividend > divisor)
        return 0;

    temp = 0;
    count = 1;
    res = 0;
    //线性增长着减,每次减dividend==count*|divisor|
    while (dividend <= divisor) {
        temp += divisor;
        dividend -= temp;
        res = res + count;
        count++;
    }
    //减多了,倒回去再一个一个减
    if (dividend > 0) {
        dividend += temp;
        res = res - count + 1;
        while (dividend <= divisor) {
            dividend -= divisor;
            res++;
        }
    }

    if (flag == 1)
        res = -res;

    return res;
}
int main()
{
    int i = 0;
    int j = 0;
    scanf_s("%d%d", &i, &j);
    int dev = divide(i, j);
    printf("%d\n", dev);
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2187927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【黑马点评】1 项目导入以及短信功能

苍穹外卖结束之后&#xff0c;进一步学习Redis的使用。学习Redis的实战篇&#xff0c;黑马点评。 这是复现过程中的详细笔记。 【黑马点评】1 项目导入以及短信功能 1 项目导入以及短信登录1.1 导入黑马点评项目1.1.1 导入SQL1.1.2 有关当前模型1.1.3 导入后端项目1.1.4 导入前…

植物种类识别系统源码分享

植物种类识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

大数据分析案例-基于逻辑回归算法构建抑郁非抑郁推文识别模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

鼠标一动,桌面起飞?Kando 如何改变你的工作流

鼠标一动&#xff0c;桌面起飞&#xff1f;Kando 如何改变你的工作流 想要更快、更有趣地操作你的桌面&#xff1f;Kando&#xff0c;这款跨平台的 Pie Menu 工具&#xff0c;帮你实现这一切。本文将为你介绍 Kando 的功能特点、适用场景&#xff0c;以及如何快速上手。 什么是…

Stable Diffusion绘画 | 插件-Deforum:商业LOGO广告视频

第1步&#xff1a;在 Deforum 的「初始化」中上传需要展示的 LOGO图片&#xff1a; 第2步&#xff1a;在「运行」模块进行设置&#xff1a; 设置宽高&#xff1a;保持与初始化上传图片的像素一致设置迭代步数&#xff1a;步数越高&#xff0c;视频细节越好 其他参数保持默认&…

【树形DP】AT_dp_p Independent Set 题解

step 1 题意理解 有一棵有 N N N 个顶点的树&#xff0c;编号为 1 , 2 , … , N 1,2,…,N 1,2,…,N。 Taro 决定将每个顶点涂成白色或黑色。 在这里&#xff0c;不允许将相邻的两个顶点都涂成黑色。 找出可以涂色的方式数量&#xff0c;对 1 0 9 7 10^9 7 1097 取模。 …

工业物联网的安全与隐私保护—SunIOT

【大家好&#xff0c;我是唐Sun&#xff0c;唐Sun的唐&#xff0c;唐Sun的Sun。一站式数智工厂解决方案服务商】 在当今数字化的时代&#xff0c;工业物联网&#xff08;IIoT&#xff09;正以前所未有的速度改变着工业生产的模式和效率。然而&#xff0c;随着工业物联网的广泛…

如何对物理系统进行数学建模?

一、关键因素和步骤 对某一物理系统建模时&#xff0c;需要考虑以下关键因素和步骤&#xff1a; 系统定义与理解&#xff1a; 清晰定义系统边界和组成部分&#xff0c;理解系统的功能、结构和动力学特性。 分析系统输入、输出及其相互作用&#xff0c;确定系统的动态变量。 建…

Linux之实战命令24:od应用实例(五十八)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

大模型~合集3

我自己的原文哦~ https://blog.51cto.com/whaosoft/11576789 # 大模型对齐阶段的Scaling Laws Scaling law不仅是一个好用的工具&#xff0c;它本身的存在也给出了能影响模型效果的关键因素&#xff0c;指导着算法的迭代方向&#xff0c;比如在预训练中&#xff0c;核…

【Python】bpython:增强版 Python 交互式解释器

bpython 是一个增强版的 Python 交互式解释器&#xff0c;它为开发者提供了更加友好和高效的交互体验。与 Python 内置的 REPL (Read-Eval-Print-Loop) 相比&#xff0c;bpython 提供了更多实用功能&#xff0c;比如自动补全、语法高亮、实时显示函数签名等&#xff0c;使得编写…

如何高效使用Prompt与AI大模型对话

一、如何与人工智能对话 在人工智能的世界里&#xff0c;提示词&#xff08;Prompt&#xff09;就像是一把钥匙&#xff0c;能够解锁AI智能助手的潜力&#xff0c;帮助你更高效地获取信息、解决问题。但如何正确使用这把钥匙&#xff0c;却是一门艺术。本文将带你了解提示词的…

如何在银河麒麟高级服务器操作系统V10搭建虚拟机管理器?

如何在银河麒麟高级服务器操作系统V10搭建虚拟机管理器&#xff1f; 1. 安装libvirt和virt-manager2. 启动libvirt服务3. 打开virt-manager &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在银河麒麟V10上搭建虚拟机管理器&#xff0c;只需…

python泵站设备运行预警信息管理系统

目录 功能介绍具体实现截图技术栈和环境说明python语言解决的思路性能/安全/负载方面核心代码部分展示详细视频演示源码获取方式 功能介绍 用户端 注册登录&#xff1a;用户可以注册账号并登录系统。 西电泵站简介&#xff1a;提供泵站的历史、功能和重要性等详细介绍。 泵站…

华为OD机试 - 无向图染色(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

前缀和算法详解

对于查询区间和的问题&#xff0c;可以预处理出来一个前缀和数组 dp&#xff0c;数组中存储的是从下标 0 的位置到当前位置的区间和&#xff0c;这样只需要通过前缀和数组就可以快速的求出指定区间的和了&#xff0c;例如求 l ~ r 区间的和&#xff0c;就可以之间使用 dp[l - 1…

Java继承、final/protected说明、super/this辨析

目录 1.什么是继承 2.继承的特征 3.子类构造方法 4.super和this辨析 5.再谈初始化 6.protected关键字用法说明 7.final的用法说明 1.什么是继承 上面的这个animal就是基类&#xff0c;我们的这个dog和bird都是继承这个基类的特征&#xff0c;使用的是extends这个关键字&a…

【重学 MySQL】五十六、位类型

【重学 MySQL】五十六、位类型 定义赋值与使用注意事项应用场景 在MySQL数据库中&#xff0c;位类型&#xff08;BIT类型&#xff09;是一种用于存储位字段值的数据类型。 定义 BIT(n)表示n个位字段值&#xff0c;其中n是一个范围从1到64的整数。这意味着你可以存储从1位到64…

终于知道神秘的蓝莓真身了

黑森林实验室&#xff08;Black Forest Labs&#xff0c;简称 BFL&#xff09;是一家初创公司&#xff0c;由流行的 Stable Diffusion AI 图像生成模型的创建者创立&#xff0c;该模型是许多 AI 图像生成应用程序和服务&#xff08;如 Midjourney&#xff09;的基础。 这意味着…

github/git密钥配置与使用

零、前言 因为要在ubuntu上做点东西&#xff0c;发现git clone 的时候必须输账户密码&#xff0c;后来发现密码是token&#xff0c;但是token一大串太烦了&#xff0c;忙了一天发现可以通过配置 公钥 来 替代 http 的 部署方式。 一、生成 ssh 密钥对 我们先测试下能不能 连接…