求一个简单数学算法 目的:主要通过积分来计算级别比如:1级:0~500......(1)*5002级:500~1500......(1+2)*5003级:1500~3000......(1+2+3)*5004级:3000~5000......(1+2+3+4)*500假如当前用户积分是1025628分,利用这个规律,如何用最简便的公式算出当前级别 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 static int Level(int number){ if (number < 0) return 0; var i = 1; var j = 1; while(true) { if (number <= j * 500) return i; i++; j += i; }}static void Main(string[] args){ Console.WriteLine(Level(500)); Console.WriteLine(Level(1500)); Console.WriteLine(Level(3000)); Console.WriteLine(Level(5000)); Console.WriteLine(Level(1025628)); // 64 Console.ReadKey();}蹭分 这不是很简单吗?后面就是一个简单的递增数列求和。你把积分除以500,然后再用递增数列求和的反函数(原函数是Y=X*(X+1)/2),就能得到个约数,然后取整就OK了。 private int GetGread(int source) { int t=1; int s1,s2; s1 = 0; s2 = 0; for(int i=1;i<10;i++) { s2 = ((i+1)*i/2)*500; if(source>s1 && source<=s2) { t = i; break; } s1 = s2; } return t; } max = 100;level = 0;s = 1025628;for (int i = 1 ; i< max; i++){ if (i * 500 >= s) { level = i } else { s = s - i* 500 }}没测试过,不知道是不是你想要的。 根据二项式定理。最终得到的等级公式。private int levelnum (int score) { if (score <= 0) return 0; Double Y; Y = (Math.Sqrt(625 + 10 * score) - 25) / 50; return Convert.ToInt32(Y); } 这样数据如何有个简单的算法 WPF MVVM模式下,viewmodel与view交互怎么办? 急,急,怎么在获得的值上加个连接?? 如何将程序保存在硬盘时令其自动运行? 正则表达式提取的问题 static的作用 推荐一个免费在线SQL格式化工具 C#_ABC问题。 请问c#中如何调用运行exe程序??? 输出询问“你要我请你吃饭吗?”,选择“好的/不需要?(y/n):”,如果输入为y则打印“我们一起去吃饭”,若输出为n,则继续询问。 访问Oracle9i的程序问题 C#高手进来 帮忙做几道题 小弟感激不尽
{
if (number < 0) return 0;
var i = 1;
var j = 1;
while(true)
{
if (number <= j * 500) return i;
i++;
j += i;
}
}
static void Main(string[] args)
{
Console.WriteLine(Level(500));
Console.WriteLine(Level(1500));
Console.WriteLine(Level(3000));
Console.WriteLine(Level(5000));
Console.WriteLine(Level(1025628)); // 64
Console.ReadKey();
}
蹭分
你把积分除以500,然后再用递增数列求和的反函数(原函数是Y=X*(X+1)/2),就能得到个约数,然后取整就OK了。
{
int t=1;
int s1,s2;
s1 = 0;
s2 = 0;
for(int i=1;i<10;i++)
{
s2 = ((i+1)*i/2)*500;
if(source>s1 && source<=s2)
{
t = i;
break;
}
s1 = s2;
}
return t;
}
level = 0;
s = 1025628;
for (int i = 1 ; i< max; i++)
{
if (i * 500 >= s)
{
level = i
}
else
{
s = s - i* 500
}
}
没测试过,不知道是不是你想要的。
{
if (score <= 0) return 0; Double Y; Y = (Math.Sqrt(625 + 10 * score) - 25) / 50; return Convert.ToInt32(Y);
}