数学问题有帮助

时间:2009-09-04 13:33:03

标签: php algorithm math

我有一些代码,如果用户推荐了X个人,他将获得X个积分。

例如,引用2个人= 1个学分。 4人= 2学分,依此类推。

然而,如果这变得棘手的话,可以更改数字,这样他每人可获得1个学分,或每3个人获得1个学分,5个人获得1个学分等等。

如果他获得3个人的1个学分,并且他已经推荐了5个人,那么我希望他获得1个学分,并且存储他仍然有2个人,他没有获得任何学分。因此,下次他引用某人时,它是2 + 1 = 3,并且他获得了信用。

我的问题是,

鉴于X =他需要推荐1个学分的人数, 和Y =用户提到的人数,

(所以X可能是3,每个学分3个人,Y可能是6,在这种情况下他应该获得2个学分)

1)什么是X和Y的直接公式或函数,并返回应该给予该人的学分数,

2)哪个还将为剩余的学分提供剩余部分。例如,如果X是3而Y是5,则积分将是1,余数将是2,所以下一个引用者Y将再次变为3并且用户将获得1个积分?

4 个答案:

答案 0 :(得分:8)

1.) 
creditsToPayout = Y/X; //use integer division to truncate, or floor result
remainderReferrals = Y % X; //remainder of Y / X, leftover referrals

答案 1 :(得分:1)

您需要整数除法和模数。对于PHP,请参阅here

 - intval($a / $b)
 - $a % $b

答案 2 :(得分:1)

如果这个数字会随着时间的推移而发生变化,那么,如果最终每个学分的人数为3人,会发生什么。他引用了7个人,剩下1个人获得2个学分。然后规则更改为每个信用4人。根据该规则,他只能获得1个积分,剩下3个人。你还拿回信用卡吗?我猜不是,新规则只适用于新的学分。因此,我认为您需要保留您的数据库或其他任何内容,收到的学分数量以及剩余的推荐数量,这些数量不足以获得学分。随着时间的推移,未记入的推荐人数会随着时间的推移而上升和下降,因为他会进行新的推荐,并且他们会“兑换”积分。

坦率地说,如果您可以将规则定为每个推荐的X点数而不是每个点数的X推荐数,那么会更简单,然后只是增加您使用积分购买的任何成本。比如,如果规则是5个推荐的1个学分,当你获得10个学分时你得到一个免费的iPod或其他什么,那么你需要50个推荐来获得iPod。因此,每次推荐将其更改为1个积分,获得iPod需要50个积分。然后你永远不必处理分数。但也许你没有制定规则,这一切都无关紧要。

答案 3 :(得分:0)

学分数= FLOOR(Y / X)

剩余= Y-(X * FLOOR(Y / X))