2009-09-04 40 views
-4

我有一些代码,如果一个用户已经提到X人数,他会得到X数量的学分。数学问题帮助

例如,提到2人= 1信用。 4人= 2学分,依此类推。

然而,当这得到棘手的是,这些数字是可以改变的,所以他得到每人1个学分,或每3人1个学分,1个学分为5人,等

如果他得到了3 1个学分人们,他已经提到了5个人,那么我希望他得到1个信用,并存储它,他仍然有2个人,他没有得到任何信用。所以下一次他提到某人的时候,就是2 + 1 = 3,并且他得到了信用。

我的问题是,

鉴于X =的他需要引用为1个学分, 和Y =人用户已refered号码,

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

1)什么是简单的公式或函数,将X和Y,并返回应该给予的学分数那个人,和

2)哪一个还将给予尚未颁发的学分余额。例如,如果X是3,Y是5,信用额度是1,剩余部分是2,那么下一个引用者Y将再次变为3,用户将获得1个信用额度?币的

+0

X可以随时间变化吗? – Bombe 2009-09-04 13:36:18

+1

重读你的问题,并编辑纠正不一致。在第四段中,如果他每人获得3个学分,那么如果他提到五个人,他应该得到15个学分不是一个学分。你的意思是每3个人1分? - – 2009-09-04 13:43:14

+0

wtf?为什么这么多downvotes – 2009-09-05 16:08:05

回答

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

总数= FLOOR(Y/X)

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

1

需要整数除法和模量。对于PHP看到here为:

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

如果数量可以随时间而改变,如果说,intially是每学分3人发生了什么。他指7个人,并获得2个学分,剩下1个人。然后规则更改为每个信用4人。根据这条规则,他只会得到1分,剩下3个人。你有信用吗?我猜不是,新规则只适用于新的学分。所以我认为你需要保留你的数据库或其他信息,收到的信用数量以及剩下的不足以作为信用的转介数量。随着时间的推移,未记账的推荐人数量会随着时间的推移而增减,因为他会进行新的推介,并在他们“交换”信用。

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