求10是首项为1公比为的2的等比数列中哪几项的和?请用C#编程实现!

wang520d 2011-11-11 04:16:21
如题!
10=2+8;我要的结果就是2和8
17=1+16;
11=1+2+8;
好像这样的分拆 只会有一组数字符合。我想利用这个公式来存储客户所属的客服组信息;
比如 客户A所属于的组是 17 那么在客服登录系统的时候 组号是1或者16 我就让客服可以看到这个客户的信息!
也就是说数据库里面存17.
...全文
190 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gomoku 2011-11-11
  • 打赏
  • 举报
回复

16 8 4 2 1
---------------
10= 1 0 1 0
17= 1 0 0 0 1
11= 1 0 1 1

17的二进制表示就是10001。一个32bit的整数有最多32个位置来存储客服组。
不过这种数据库数据存储方式也有不足的地方,一个是扩展局限,一个是不容易理解。
a1156025449 2011-11-11
  • 打赏
  • 举报
回复
1 2 4 8 16 32

比如:x 为 17 找出比它大的则是32 在数组总下标为 5 ,然后向下查找

如果 x> 匹配值 则 显示出来 如 17>16 显示:16+
然后x=x-匹配值 即 x=17-16=1,如此循环向下找
xuStanly 2011-11-11
  • 打赏
  • 举报
回复
这个我觉得可以利用素数来算.只要客服不太多,应该就可以.
为每个客服分配一个素数代码,客户的组号由客服的代码的乘积来表示.
只要客户的组号可以除尽客服的代码就代表这个客服可以查看这个客户.
wang520d 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 a1156025449 的回复:]
using System;
using System.Collections.Generic;
using System.Text;

namespace Ctest
{
class Program
{
static void Main(string[] args)
{
long k = 0;
long.TryParse(Console.ReadLin……
[/Quote]

能解释下您这个方法吗?
wang520d 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 a1156025449 的回复:]
不知道你那个数据有多大
[/Quote]

这个不可预计 要是客服的组多这个数字估计就比较大了。。
a1156025449 2011-11-11
  • 打赏
  • 举报
回复
不知道你那个数据有多大
a1156025449 2011-11-11
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Text;

namespace Ctest
{
class Program
{
static void Main(string[] args)
{
long k = 0;
long.TryParse(Console.ReadLine(), out k);
if (k == 0) return;
else
{
printfresult(k);
}
}

static void printfresult(long x)
{
long i = 0;
for (; ;i++ )
{
if(x<Math.Pow(2,i))break;
}
i--;
for (; i >= 0; i--)
{
int tmp=(int)Math.Pow(2,i);
if (x > tmp)
{
Console.Write(tmp.ToString()+"+");
x -= tmp;
}
else if (x == tmp)
{
Console.Write(tmp.ToString());
break;
}
}
Console.WriteLine();
Main(null);
}
}
}

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧