我需要得到一个数字的平均值,但不是十进制形式,我需要它以“公平”整数形式。我不知道这是否是解释它的最佳方式,所以这里有一些例子。
示例:
51 / 4 = 12.75
但我需要更多的内容:
51 / 4 = 13,13,13,12
任何建议都将不胜感激。
答案 0 :(得分:7)
首先使用编程整数除法,然后使用Modulus查找余数。 这是一个例子:
依靠整数除法摧毁你的余数。
99/5 = 19
然后使用Modulus查找余数
99 % 5 = 4
然后增加四个数字......
列出
20 20 20 20 19
答案 1 :(得分:3)
在伪代码中:
int base = floor( dividend / divisor );
int with_one_more = dividend MOD divisor;
结果将是with_one_more
条目等于base+1
,divisor-with_one_more
条目为base
。在您的示例中,dividend
= 51,divisor
= 4。这使base
= 12,with_one_more
= 3。
答案 2 :(得分:2)
嗯,对于x / y,这将是一个包含数字(x div y)+ 1和(x mod y)次数的列表,并且它包含数字(x div y)和y - ( x mod y)次。
答案 3 :(得分:1)
据我了解你对“公平整数形式”的定义,一种算法可以采用以下形式:
p / q
p
,q
,如果它尚未出现在此表单中。51/4
情况下,您有12
和3/4
。请拨打这些号码n
和p/q
。q
个数字,其中p
的第一个n + 1
为n
,其余为{{1}}。答案 4 :(得分:1)
如果51/4返回向下舍入的整数值,在这种情况下为12,则表示该值介于12和13之间,因此取51模数13为12。
x/y = z
x mod (z + 1) = w
您的数字是(y - 1)乘以z和w,例如:
63/4 = 15
63 mod (15 + 1) = 15
所以数字是(4 - 1)乘以16和15:16,16,16,15。