假设我有一个随机的百万位数字 = x,这样:
len(str(x)) = 1000000
Run Code Online (Sandbox Code Playgroud)
通过查看一些解释,我可以使用 x % (10 ** n) 来查找最后 n 位数字。但我无法理解为什么会这样。
这样,如果我想找到 x 的最后 11 位数字,我的代码将是:
x % (10 ** 11)
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解释一下吗?
假设我有一个值可能在 [28,32] 范围内或该范围内数字的倍数内。
有没有一种方法可以使用模运算符在一行中测试这一点?
尝试过:
if value % (28 or 29 or 30 or 31 or 32) == 0:
# do stuff
Run Code Online (Sandbox Code Playgroud)
还有一些类似的变化。我尝试搜索,因为我确信这是一个常见的操作,但我找不到答案。
我的同事告诉我,代码修改 2 的功能将针对位操作进行优化,并且比修改其他数字更快。我检查了装配体,证明了他的选择。但我用 Golang 编写了一个基准代码并使用 Go 版本 1.17 运行它。似乎并没有太大的区别。为什么会发生这种事?他是对的吗?
这是 Golang 代码:
package main
import (
"fmt"
"time"
)
const loop = 10000000000
func Mod1024() int {
sum := 0
for i := 0; i < loop; i++ {
sum += i % 1024
}
return sum
}
func Mod1023() int {
sum := 0
for i := 0; i < loop; i++ {
sum += i % 1023
}
return sum
}
func main() {
start := time.Now()
Mod1023() …Run Code Online (Sandbox Code Playgroud) 好的,我有两个功能,第一个看起来像这样:
let dlth x = float (x.ToString().Length)
Run Code Online (Sandbox Code Playgroud)
它采用浮点数并返回数字位数,该部分工作正常.第二个函数如下所示:
let droot x = ((x ** (1./(dlth x))) % 1.)
Run Code Online (Sandbox Code Playgroud)
它取一个浮点数并将其提升到等于1.0 /(位数)的幂,然后得到结果并且模数为1.0.整数应该为零.
所以对于droot 36.它需要(36.0**(1.0/2.0))这是6.0然后6.0 mod 1.0等于0.0;
现在,这个工作正常,直到我尝试编号81.0.(以及所有应该工作的81以上的数字)由于某种原因返回1.0,抛弃我的模式匹配.任何人都可以告诉我为什么会这样吗?
PostScript:这是Project Euler解决方案的一部分.如果您知道哪个问题,请不要发布Project Euler解决方案.我只需要帮助弄清楚为什么模数会返回有趣的结果
我必须编写一个读取3个数字(使用输入框)的程序,根据它们的值,它应该写下以下消息之一:
这是我到目前为止:
import javax.swing.JOptionPane;
class program3
{
public static void main(String[] args)
{
String num1 = JOptionPane.showInputDialog("Enter first number.");
String num2 = JOptionPane.showInputDialog("Enter second number.");
String num3 = JOptionPane.showInputDialog("Enter third number.");
boolean newnum1 = Integer.parseInt(num1);
boolean newnum2 = Integer.parseInt(num2);
boolean newnum3 = Integer.parseInt(num3);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我被困的地方.我不知道如何使用MOD来显示消息.我想我也必须使用IF声明......但我不太确定.
请帮忙!:d
我需要在预打印表单的两面打印DataGridView中的数据,但是:
我将选择要打印的组.
我打算这样做:

如果该MOD的结果为2,那么它将打印Side 1排列,如果该MOD的结果为2,则它将打印Side 2排列.
请解释以下原因,数学上正确的答案是-2两种情况:
int a=7%-5; //Assigns 2 to a
int a=-7%5; //Assigns -2 to a
Run Code Online (Sandbox Code Playgroud)
代码在C中.
当使用"while"循环在C#中解决"fizz-buzz"时,我发现首先我应该找到3和5的倍数(15的倍数),然后像下面那样转到3和5的倍数.
int myval = 0;
while (myval < 100)
{
myval = myval + 1;
if (myval % 15 == 0)
{
listBox1.Items.Add("fizzbuzz");
}
else if (myval % 3 == 0)
{
listBox1.Items.Add("fizz");
}
else if (myval % 5 == 0)
{
listBox1.Items.Add("buzz");
}
else
{
listBox1.Items.Add(myval);
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果我编写代码来首先过滤3和5的倍数然后转到3和5的倍数(15的倍数),如下所示,最终结果只显示嘶嘶声(3的倍数)和嗡嗡声(5的倍数)没有嘶嘶声(3和5的倍数).有谁知道这是什么原因,即使IDE没有向我显示任何错误.
myval = 0;
while (myval < 100)
{
myval = myval + 1;
if (myval % 3 == 0)
{
listBox1.Items.Add("fizz");
}
else if (myval % 5 == 0)
{ …Run Code Online (Sandbox Code Playgroud) 为什么在C ++ 中-26 % 10输出-6?
如何获得将输出的标准模数4?
注意:这个问题可能是一个重复这一个,或许多人,但我还没有找到一个在很短的方式制定,在眨眼可以理解的。正如我个人喜欢查找简短问题/简短回答(针对简单问题)一样,我认为这可能会引起其他人的兴趣。稍后我将删除此通知。
我正在制作一个使用mod 5的程序.
所以我将输入数除以5并返回余数.
var mod5 = function (xx) {
var mod = 5;
return ((xx % 5) + 5) % 5;
}
Run Code Online (Sandbox Code Playgroud)
因此6 = 1,4 = 4和8 = 3.
按照这个规则,所有可被整除的东西5 = 0,
为了让我的程序工作5, 10, 15, 20 ... mod 5,所有必须= 5而不是0.
但所有其他数字需要保持不变.最简单的方法是什么?
PS我对编程非常陌生,如果这没有意义,我很抱歉.