c++ - 我将如何处理计算一个非常大的数字并将其存储为 C++ 中的整数?
问题描述
对于我的离散结构类,我必须在 C++ 中计算 53^37 (mod 77)。在纸上我知道这相当于 4,但是在尝试自己编写代码并四处搜索之后,我似乎无法让它等于 16 以外的任何值。我假设这是因为 53^37 的数字太大了店铺。
解决方案
从字面上看,我们可以说 53^37 53*53*53*53*... a total of 37 times
。我们可以重新安排它,53*53 = 2809
然后它会2809*2809*2809*... 18 times * a lone 53
在最后产生。然后 find 2809 mod 77 = 37
,这意味着对于每个乘法,您都会收到 37 的提醒,我们有 18 次乘法要做,
37 ^ 18 = 16890053810563300749953435929
,然后我们乘以孤 53 得到895172851959854939747532104237
。
这个数字还是太大了,所以我们重复这个过程,37 ^ 18 = 1369 ^ 9
,我们找到1369 mod 77 = 60
,那么它就是60 ^ 9 * a lone 53 = 534117888000000000
,534117888000000000 mod 77 = 4
。这可以对任何初始指数递归地完成。
推荐阅读
- javascript - 简化选择器
- python - 如何使用 groupby 计算平均百分比变化
- c# - 如何在 ASP.NET Core 3.1 WebApi 中使用自定义记录器登录一些不同的文件?
- python - 从python中的超类构造函数访问子类的类变量(详细)
- reactjs - 无法将json数据中的值显示到图表js中
- java - 使用 TimeZone 和 ZoneId 类的时区 ID 之间的差异
- javascript - 如何使用表达式绑定获取数组长度?
- c++ - Visual Studio c++ 注册箭头键在调试文件中遇到错误
- python-3.x - 让用户有机会在同一程序实例中选择新选项
- python - Python TKinter:画布图像文件只包含一个黑色像素而不是 512x256 绿色像素,为什么?