在本教程中,我们将求解方程(a b)%m,其中a是一个非常大的数字。
公式(a b)%m =(a%m)*(a%m)... b_times。我们可以通过找到a%m的值然后将其乘以b来解决该问题。
让我们看看解决问题的步骤。
初始化数字a,b和m。
编写一个函数来查找a%m。
用0初始化数字。
以字符串格式遍历数字。
将最后一位数字加到数字上。
用对它们取模的数字来更新数字。
获得a%m的值。
编写一个循环b次的循环。
将a%m乘以m取模。
打印结果。
让我们看一下代码。
#include<bits/stdc++.h> using namespace std; unsigned int aModm(string str, unsigned int mod) { unsigned int number = 0; for (unsigned int i = 0; i < str.length(); i++) { number = number * 10 + (str[i] - '0'); number %= mod; } return number; } unsigned int aPowerBmodM(string &a, unsigned int b, unsigned int m) { unsigned int a_mod_m_result = aModm(a, m); unsigned int final_result = 1; for (unsigned int i = 0; i < b; i++) { final_result = (final_result * a_mod_m_result) % m; } return final_result; } int main() { string a = "123456789012345678901234567890123"; unsigned int b = 3, m = 7; cout << aPowerBmodM(a, b, m) << endl; return 0; }输出结果
如果执行上述程序,则将得到以下结果。
1
本文向大家介绍在C ++中找到2 ^(2 ^ A)%B,包括了在C ++中找到2 ^(2 ^ A)%B的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序来计算等式2 ^(2 ^ A)%B。 我们将使用递归函数找到方程的值。让我们看看解决问题的步骤。 编写一个带有2个参数A和B的递归函数。 如果A为1,则将4%B返回为2 ^(2 ^ 1)%B = 4%B. 否则用A-1和b递归
本文向大家介绍在数组中找到四个元素a,b,c和d,以便在C ++中a + b = c + d,包括了在数组中找到四个元素a,b,c和d,以便在C ++中a + b = c + d的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个整数列表。我们的任务是找到四个不同的整数,分别为(a,b)和(c,d)两对,这样a + b = c + d。如果有多个答案,则仅打印一个。假设数组元素像:A = [7
我尝试了一些代码在Java中交换两个整数,而不使用第三个变量,即使用XOR。 以下是我尝试的两个交换函数: 该代码产生的输出如下: 我很想知道,为什么会有这样的说法: 和这个不一样?
问题内容: 我尝试了一些代码,使用XOR在Java中交换两个整数而不使用第三个变量。 这是我尝试的两个交换函数: 这段代码产生的输出是这样的: 我很好奇,为什么这样说: 与这个不同吗? 问题答案: 问题是评估的顺序: 参见JLS第15.26.2节 首先,对左操作数求值以产生一个变量。 如果该评估突然完成,则赋值表达式由于相同的原因而突然完成;右边的操作数不会被评估,并且不会发生赋值。 否则,将保存
问题内容: 这是我的第一个问题,我开始学习Python。之间有什么区别: 和 在下面的示例中编写时,它显示不同的结果。 和 问题答案: 在中,在将右侧的表达式赋给左侧之前对其求值。因此,它等效于: 在第二个示例中,运行时已更改的值。因此,结果是不同的。
问题内容: 今天,我发现了python语言一个有趣的“功能”,这让我感到非常悲伤。 那个怎么样?我以为两者是等同的!更糟糕的是,这是我调试时遇到的麻烦的代码 WTF!我的代码中包含列表和字典,并且想知道我到底怎么把dict的键附加到列表上而又没有调用.keys()。事实证明,这就是方法。 我认为这两个陈述是等效的。即使忽略这一点,我也可以理解将字符串追加到列表的方式(因为字符串只是字符数组),但是