日期:2014-05-17  浏览次数:20828 次

一个公式计算的问题?
一个积分,对应一个等级,但一个等级可能对应多个积分,这样,如果给你任意一个积分,怎么用公式算出等级?没有财富了,郁闷……
前面3级情况特殊:
积分:0 = 等级:1
积分:1 = 等级:2
积分:2 = 等级:3
后面情况一样,每4级为一个阶段。
积分:3或4或5 = 等级:4
积分:6或7或8 = 等级:5
积分:9或10或11 = 等级:6
积分:12或13或14 = 等级:7
---------------------------------------------
积分:15或16或17或18或19 = 等级:8
积分:20或21或22或23或24 = 等级:9
积分:25或26或27或28或29 = 等级:10
积分:30或31或32或33或34 = 等级:11
---------------------------------------------
积分:35或36或37或38或39或40或41 = 等级:12
积分:42或43或44或45或46或47或48 = 等级:13
积分:49或50或51或52或53或54或55 = 等级:14
积分:56或57或58或59或60或61或62 = 等级:15
---------------------------------------------
积分:63或64或65或66或67或68或69或70或71 = 等级:16
积分:72或73或74或75或76或77或78或79或80 = 等级:17
积分:81或82或83或84或85或86或87或88或89 = 等级:18
积分:90或91或92或93或94或95或96或97或98 = 等级:19
---------------------------------------------
除了前3级为+0,+1,+1,然后按下面的规则加
1-3级  +0,+1,+1
每4级为一个阶段   
4-7级  +2,+3,+3,+3   
8-11  +4,+5,+5,+5   
12-15 +6,+7,+7,+7
16-19 +8,+9,+9,+9
20-23 +10+11+11+11
24-27 +12+13+13+13
28-31 +14+15+15+15
..... ............
n n+3  +(n/4)×2+[(n/4)×2+1] +[(n/4)×2+1] +[(n/4)×2+1] 
注意n是整数,必须去掉小数部分,也不能四舍五入

------解决方案--------------------
C# code

        private static int checkLevel(int score)
        {
            int level = 0;
            if (score < 4)
            {
                level = score + 1;
            }
            else if (score == 4)
            {
                level = 4;
            }
            else
            {
                int rus = 2;
                for (int n = 1; n < int.MaxValue; n++)
                {
                    rus = rus + 8 * n + 4;
                    if (rus >= score)
                    {
                        rus = n;
                        break;
                    }
                }

                level = score / (2 * rus + 1) + (2 * rus + 1);

            }
            return level;
        }