如何计算(A*B)%C? [复制]

2024-03-02

有人可以帮我如何计算吗(A*B)%C, where 1<=A,B,C<=10^18在C++中,没有big-num,只是一种数学方法。


从我的脑海中浮现出来(未经广泛测试)

typedef unsigned long long BIG;
BIG mod_multiply( BIG A, BIG B, BIG C )
{
    BIG mod_product = 0;
    A %= C;

    while (A) {
        B %= C;
        if (A & 1) mod_product = (mod_product + B) % C;
        A >>= 1;
        B <<= 1;
    }

    return mod_product;
}

这有复杂性O(log A)迭代。您可能可以替换大部分%通过条件减法,可以提高性能。

typedef unsigned long long BIG;
BIG mod_multiply( BIG A, BIG B, BIG C )
{
    BIG mod_product = 0;
    // A %= C; may or may not help performance
    B %= C;

    while (A) {
        if (A & 1) {
            mod_product += B;
            if (mod_product > C) mod_product -= C;
        }
        A >>= 1;
        B <<= 1;
        if (B > C) B -= C;
    }

    return mod_product;
}

该版本只有一个长整数模——它甚至可能比大块方法更快,具体取决于您的处理器如何实现整数模。

  • 现场演示:https://ideone.com/1pTldb https://ideone.com/1pTldb-- 与 Yakk 的结果相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算(A*B)%C? [复制] 的相关文章

  • 如何从RichTextBox中获取显示的文本?

    如何获得显示的RichTextBox 中的文本 我的意思是 如果 RichTextBox 滚动到末尾 我只想接收那些对我来说可见的行 P S 获得第一个显示的字符串就足够了 您想使用 RichTextBox GetCharIndexFrom
  • 如何将十六进制字符串转换为十六进制数字[重复]

    这个问题在这里已经有答案了 可能的重复 如何将十六进制字符串转换为有符号整数 https stackoverflow com questions 3705429 how do i convert hex string into signed
  • 键盘加速器在 UWP 应用中停止工作

    我正在尝试将键盘加速器添加到 UWP 应用程序中的 CommandBar 菜单项 当应用程序启动时 这工作正常 但在我第一次打开溢出菜单后 加速器停止工作 这似乎不会发生在主要命令 菜单之外 上 只有溢出菜单内的辅助命令才会发生 此外 单击
  • 使用API​​隐藏程序标题栏

    它可以使用 c 和 windows api 删除窗口控制台标题栏 如果是的话如何 请 这个简单的应用程序隐藏并显示其所在控制台的标题栏 它会立即将控制台标题更改为 guid 以查找窗口句柄 然后 它使用 ToggleTitleBar 使用找
  • 用户控件内所有控件均为空

    我有一个 UserControl 它使用 UserControl 以及其他控件 In the ascx文件我有以下代码
  • 处理中渲染极地带面体时出现问题

    我最近一直在研究 Zohedrons 和Rob Bell http zomadic com 做出了美丽的 我玩了免费的极地带面体 Sketchup 插件 http zomebuilder com 并考虑使用几何图形加工 http proce
  • C# datagridview 列转入数组

    我正在用 C 构建一个程序 并在其中包含一个 datagridview 组件 datagridview 有固定数量的列 2 我想将其保存到两个单独的数组中 但行数确实发生了变化 我怎么能这样做呢 假设一个名为 dataGridView1 的
  • 手动将 ClientBase 集合类型从 Array[] 更改为 List<>

    我将自己的 WCF 代理与 Client Base 一起使用 我想做一些类似于 svc util 中的 ct 属性的操作 并告诉代理返回 List 集合类型 我不能使用 List 因为实体由 nhibernate 管理 所以我必须使用 IL
  • 操纵 setter 以避免 null

    通常我们有 public string code get set 如果最终有人将代码设置为 null 我需要避免空引用异常 我尝试这个想法 有什么帮助吗 public string code get set if code null cod
  • 更改 IdentityServer4 实体框架表名称

    我正在尝试更改由 IdentityServer4 的 PersistedGrantDb 和 ConfigurationDb 创建的默认表名称 并让实体框架生成正确的 SQL 例如 而不是使用实体IdentityServer4 EntityF
  • 以编程方式更新 ClickOnce 应用程序的部署清单会导致缺少 4.0 中所需的 <兼容框架> 元素

    我正在致力于自动化 NET 4 0 ClickOnce WPF 应用程序的安装程序 该应用程序需要在应用程序配置文件 我经历了寻找必须遵循的具体步骤的棘手过程Mage exe http msdn microsoft com en us li
  • C#中Enum中定义的value__是什么

    What value 可能在这里 value MSN ICQ YahooChat GoogleTalk 我运行的代码很简单 namespace EnumReflection enum Messengers MSN ICQ YahooChat
  • 特征密集稀疏矩阵乘积是线程化的吗?

    我知道稀疏密集产品是根据文档进行线程化的 https eigen tuxfamily org dox TopicMultiThreading html https eigen tuxfamily org dox TopicMultiThre
  • dropdownlist DataTextField 由属性组成?

    有没有一种方法可以通过 C 使 asp net 中的下拉列表的 datatextfield 属性由对象的多个属性组成 public class MyObject public int Id get set public string Nam
  • 如何用 C 语言练习 Unix 编程?

    经过五年的专业 Java 以及较小程度上的 Python 编程并慢慢感觉到我的计算机科学教育逐渐消失 我决定要拓宽我的视野 对世界的一般用处 并做一些 对我来说 感觉更重要的事情就像我真的对机器有影响一样 我选择学习 C 和 Unix 编程
  • 按度数在圆上找到一个点?

    假设我们有一个 100x100 坐标系 如下所示 0 0 是它的左上角 50 50 是它的中心点 100 100 是它的右下角 等等 现在我们需要从中心向外画一条线 我们知道线的角度 但需要计算其终点的坐标 您认为最好的方法是什么 例如 如
  • 系统错误 124 - SHFileOperation 的 ERROR_INVALID_LEVEL

    我在使用时遇到问题SHFileOperation SHFileOperation SHFILEOPSTRUCT https stackoverflow com questions 9191415 shfileoperation shfile
  • 将非算术类型作为参数传递给 cmath 函数是否有效?

    给定以下用户定义类型S具有转换功能double struct S operator double return 1 0 以及以下调用cmath http en cppreference com w cpp header cmath使用类型的
  • #pragma pack(16) 和 #pragma pack(8) 的效果总是相同吗?

    我正在尝试使用来对齐数据成员 pragma pack n http msdn microsoft com en us library 2e70t5y1 28v vs 100 29 aspx 以下面为例 include
  • c# 模拟 IFormFile CopyToAsync() 方法

    我正在对一个异步函数进行单元测试 该函数将 IFormFile 列表转换为我自己的任意数据库文件类列表 将文件数据转换为字节数组的方法是 internal async Task

随机推荐

  • 防止导航栏右侧文本在导航栏中换行?

    In 这个 Bootply 示例 http www bootply com 133310 我该如何防止navbar right文本在移动视图中换行 我希望所有文本都保留在一行上 随着页面宽度的缩小而逐渐靠近 即 桌面视图中所见内容的压缩版本
  • 使用 Twitter API v2 方法时,Tweepy 不返回 url 媒体字段

    我请求 Twitter API v2 获取推文的详细信息并使用身份验证所需的客户端对象 import tweepy config client tweepy Client bearer token config BEARER TOKEN c
  • 使用 MVC 和 Razor 创建 object.cshtml 编辑器模板

    我希望为 Object cshtml 创建一个编辑器模板来更改 Html EditorForModel 方法的行为 我找不到任何使用 Razor 的示例 我见过这个例子 http bradwilson typepad com blog 20
  • Windows Azure 中的密钥管理

    我对如何在 Windows Azure 中存储密钥 用于数据加密 有点困惑 根据以下两个链接 1 http msdn microsoft com en us magazine ee291586 aspx 2 http blogs msdn
  • 使随机产生的数字更有可能

    我在用着x numpy random rand 1 生成一个 0 到 1 之间的随机数 我该如何做到这一点x gt 5的可能性是 2 倍x lt 5 这是一个合适的名字 只需对输入进行一些操作即可 第一组x在范围内0 to 1 5 x nu
  • 可以在Java中强制执行包依赖层次结构吗?

    基本上我有包 com me application com me application thing com me library 我想执行以下规则 com me application可以包括com me library 除了com me
  • jsdoc二维数组

    我有一个字符串数组的数组 但我不知道如何使用 JSDoc 来记录它 class function PostbackList type int default this TypeID 0 type PostbackList Field thi
  • Tomcat 7 SSL 失败

    我使用 Tomcat 7 并将启用 SSL 连接器 实际上我已经将此解决方案编辑为server xml file
  • QtRuby 可以与 Qt 5 一起使用吗?

    我可以在网上找到的所有内容QtRuby https duckduckgo com q ruby and qt使用 Qt 4 但当前的 Qt 版本是 5 这是否只是文档跟不上现实的问题 Qt 5 可以与 QtRuby 一起正常工作 如果您断言
  • Windows Phone 运行时没有页面转换

    我正在尝试禁用 Windows Phone 运行时的默认页面导航动画 我所能实现的就是将其更改为连续体 十字转门或幻灯片 但我希望页面能够立即更改 因此 当我调用 this Frame navigate 时 它应该导航到新页面 而无需任何动
  • 从 Windows 上下文菜单接收参数

    我以前做过这个 但我一生都不记得该怎么做 在我的资源管理器上下文菜单中 我添加了一个新条目 转到 regedit 转到 HKEY CLASSES ROOT bla bla bla 现在 当我单击我的选项时 我想传递文件路径 文件名等我的应用
  • 如何从服务 C# 捕获控制台输出?

    我们有一个部署到远程客户系统的 C 服务 应用程序将大量 诊断 信息写入控制台 即 Console WriteLine 该服务没有 做它应该做的事 我们如何捕获另一个应用程序中服务的控制台输出 WinForm 版本的应用程序可以在客户位置加
  • Gradle Jacoco 和 JUnit5

    我们刚刚将单元测试移植到 JUnit5 意识到这仍然是相当早期的采用 谷歌上几乎没有任何提示 最具挑战性的是为我们在 jenkins 上使用的 Junit5 测试获取 jacoco 代码覆盖率 因为这花了我几乎一天的时间才弄清楚 所以我想我
  • 注册为 Spring bean 时过滤器调用两次

    我想用 Autowire with a Filter 所以我在中定义我的过滤器SecurityConfig如下 Override protected void configure HttpSecurity http throws Excep
  • 如何在页面之间共享信息

    在开始之前 正如标题中所述 我正在学习 NET MAUI 而且我对此还很陌生 我的问题是我找不到从一个页面到上一个页面共享信息的方法 我想做的是 在 MainPage 中 有一个按钮 按下后会将用户发送到另一个页面 我们将其称为 Login
  • :为什么我无法设置Xamarin.Forms.ListView的SelectedItem属性?

    object lastItem null foreach object item in listView ItemsSource lastItem item if lastItem null listView SelectedItem la
  • 获取文件的最后修改日期/时间作为本地日期/时间字符串

    new File url lastModified 返回一个long等于自纪元以来的毫秒数 基于 GMT 将其转换为一个简单的方法是什么String代表系统本地日期 时间 如果你真的需要看到我的尝试 那就是 但这是一团糟 而且无论如何都是错
  • 如何从 Rails 内部重新启动 Rails?

    好的 所以我想在 Rails 中创建一个操作来重新启动自身 我做了一些搜索并发现 http snippets dzone com posts show 5002 http snippets dzone com posts show 5002
  • 无法从 Metro 风格应用程序获取可用磁盘空间

    我正在编写一个 Metro 风格的应用程序 想要确定托管用户音乐库的驱动器的可用存储容量 我想在磁盘上没有剩余空间或剩余空间很少的情况下禁用某些应用程序功能 我使用 P Invoke 调用 GetDiskFreeSpaceExW 并收到错误
  • 如何计算(A*B)%C? [复制]

    这个问题在这里已经有答案了 有人可以帮我如何计算吗 A B C where 1 lt A B C lt 10 18在C 中 没有big num 只是一种数学方法 从我的脑海中浮现出来 未经广泛测试 typedef unsigned long