所以,假设我有一个数字123456. 123456%97 = 72.如何确定需要将哪两位数添加到123456的末尾,以使新数字%97 = 1?注意 - 它必须始终为两位数.
例如,123456 76%97 = 1.在这种情况下,我需要将数字"76"添加到数字的末尾.
(这是用于IBAN编号计算.)
我现在正在尝试将整数转换为字符串,但遇到了问题。
我已经完成了大部分代码的编写和工作,但是在传送到下一个地方时它有一个小缺陷。这很难描述,所以我给你举个例子。使用 base 26 和由小写字母组成的字符集:
0 = "a"
1 = "b"
2 = "c"
...
25 = "z"
26 = "ba" (这应该等于 "aa")
在某些情况下似乎会跳过字符集中零位的字符。
令我困惑的是我的代码没有任何问题。我已经在这方面工作了太久了,但我仍然无法弄清楚。
char* charset = (char*)"abcdefghijklmnopqrstuvwxyz";
int charsetLength = strlen(charset);
unsigned long long num = 5678; // Some random number, it doesn't matter
std::string key
do
{
unsigned int remainder = (num % charsetLength);
num /= charsetLength;
key.insert(key.begin(), charset[remainder]);
} while(num);
Run Code Online (Sandbox Code Playgroud)
我有一种感觉,该函数在返回零的模数上绊倒了,但我一直在研究这个,我无法弄清楚它是如何发生的。欢迎任何建议。
编辑:生成的字符串是小端的这一事实与我的应用程序无关。
好的,所以我有一些 C 代码来执行数学运算,这几乎可以花费任何时间(当然,这取决于提供给它的操作数)。我想知道是否有一种方法可以注册某种方法,该方法每n秒调用一次,可以分析操作的状态,即它当前处于什么迭代,可能使用硬件定时器中断或其他什么?
我问这个的原因是因为我知道实现这一点的常用方法是跟踪变量中的当前迭代;比如说,一个整数被调用progress并且在代码中有一个像这样的 IF 语句:
if ((progress % 10000) == 0)
printf("Currently at iteration %d\n", progress);
Run Code Online (Sandbox Code Playgroud)
但我相信一个 mod 操作需要相对较长的时间来执行,所以从优化的角度来看,将它放在一个循环中的想法会运行很多很多次让我感到害怕。
所以我觉得有一种外部方式来表示进度打印是好的和有效的。有什么好的方法可以执行此操作,还是简单的“mod 检查”是最好的(在优化方面)?
我有一个关于哈希表大小和模块化哈希的问题。我所指的散列算法如下:hash_key % table_size = array_index。我正在阅读一本算法教科书,其中给出了以下建议:
如果表大小不是素数,则可能是键的所有位在确定 array_index 时都不起作用。
谁能用一个例子来解释这到底意味着什么?
我在这方面做了很多搜索,但仍然不够幸运。
我知道默认情况下,Crystal Reports 中的 MOD / REMAINDER 函数是用于整数的。
获得十进制数除以整数的余数的方法是什么?
示例:2.454 mod 1,我必须得到 0.454 作为余数。
结果的舍入设置为 0.00001。
谢谢大家!
首先,我不得不说我的英语太差了.
我找不到更好的文章标题.
无论如何,我想问你们,关于Python.
请看下面的代码.
for i in range(1,11):
print(i,'-->',i%4)
Run Code Online (Sandbox Code Playgroud)
结果是
1 --> 1
2 --> 2
3 --> 3
4 --> 0
5 --> 1
6 --> 2
7 --> 3
8 --> 0
9 --> 1
10 --> 2
Run Code Online (Sandbox Code Playgroud)
所有结果都没问题,除了那些4的倍数.我想4是4,8是4,12是4 ...不是0(零).像这样的东西.
1 --> 1
2 --> 2
3 --> 3
4 --> 4
5 --> 1
6 --> 2
7 --> 3
8 --> 4
9 --> 1
10 --> 2
Run Code Online (Sandbox Code Playgroud)
任何线索?
提前致谢.
我想在第10个数组之后输入一个新行.我的阵列从1-365填充(day[0]=1, day[1]=2, ..).
这是我的代码,我坚持创建if-condition:
int day[] = new int[365];
for(int i=0; i<day.length; i++){
day[i] = i+1;
System.out.print(day[i]+" ");
if((i % 10) == 0){
System.out.println();
}
}
Run Code Online (Sandbox Code Playgroud)
这应该是我的控制台输出:
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 …Run Code Online (Sandbox Code Playgroud) 我必须找到这些数字的除法模数:
239^(10^9) 和 10^9 + 13
239^(10^9) 和 10^9 + 15
... 等等,最多 1001;
在 C++ 中仅使用本机库。怎么做?如您所见,第一个数字大约是 30 亿个符号。
我试图找到模周期的长度,但它们比 10 还要长,甚至unsigned long long int无法处理这么大的数字 (239^10)。另外我认为“大数字”算法(将数字存储为数组)对我也不起作用(500 * 10 ^ 9)是太多操作。
顺便说一句,这应该比 5 小时内更有效。
以下两个代码序列产生相同的结果:
uint mod = val % 4;
uint mod1 = val & 0x3;
Run Code Online (Sandbox Code Playgroud)
我可以用两者来计算相同的结果.我知道在硬件中,&操作员比%操作员更容易实现.因此我希望它比%运营商有更好的性能.
我可以一直认为&性能更好或相同吗?编译器会自动优化吗?
我想知道如何从以下代码中提取$ number:
$calc = ($number % 10000) / 100;
Run Code Online (Sandbox Code Playgroud)
那么%的反面是什么?