我有一些代码,如果用户推荐了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个积分?
答案 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))