请教一个轮班的计算问题

icejd 2010-01-05 03:59:28
在作一个电子巡更程序,将一天24小时分为四个班次,同时有三个巡更小组按顺序依次进行巡更,
现在的情况是设定程序开始的时候,初始运行时的班次为 二班次 ,初始运行时的巡更小组为 小组二 ,那么,我想请教的是,在过了26天后,二班次是由哪个巡更小组来巡更
...全文
239 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
huanqun1020 2010-01-06
  • 打赏
  • 举报
回复
不知道,帮顶
septemson 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 icejd 的回复:]
最后的答案就是(d+Z*a)%b

这个经测试,
三班四组,四班三组,五班三组,都正常
[/Quote]

恩,不过我现在考虑的是c不变的情况,变的话可能还要变下。看你需求了
wzp144650 2010-01-06
  • 打赏
  • 举报
回复
数学题大哥,上大学了吧?那也要跑着问来。。。
icejd 2010-01-05
  • 打赏
  • 举报
回复
最后的答案就是(d+Z*a)%b

这个经测试,
三班四组,四班三组,五班三组,都正常
lsd123 2010-01-05
  • 打赏
  • 举报
回复
.
icejd 2010-01-05
  • 打赏
  • 举报
回复
四班三组是正常的,我换成三班四组,就不对了
icejd 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 septemson 的回复:]
上面的结果:
4班次3小组 答案是第三小组
3班次4小组 答案是第二小组
[/Quote]
还是不对呢,我的方法有问题吗
            TimeSpan ts = dateTimePicker2.Value.Date - dateTimePicker1.Value.Date;
int day = ts.Days;//天数
int cnum=int.Parse(textBox1.Text);//班组数
int gnum=int.Parse(textBox2.Text);//小组数
int bcnum = cnum * gnum;
int z = day % gnum;
int jg = ((2 + z) % gnum);
if (jg == 0)
{
jg = gnum;
}
textBox5.Text = jg.ToString();
icejd 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 septemson 的回复:]
上面的结果:
4班次3小组 答案是第三小组
3班次4小组 答案是第二小组
[/Quote]
我错了,是对的
sssddfff 2010-01-05
  • 打赏
  • 举报
回复
up
icejd 2010-01-05
  • 打赏
  • 举报
回复
3班次4小组 答案是第二小组
应该是1小组
septemson 2010-01-05
  • 打赏
  • 举报
回复
上面的结果:
4班次3小组 答案是第三小组
3班次4小组 答案是第二小组
septemson 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 icejd 的回复:]
这个天数有点别扭,事实是这样的
在作一个电子巡更程序,将一天24小时分为四个班次,同时有三个巡更小组按顺序依次进行巡更,
现在的情况是设定程序开始的时间为比如今天2010-01-05,初始运行时的班次为 二班次 ,初始运行时的巡更小组为 小组二 ,那么,我想请教的是,在2010-02-02那天,二班次是由哪个巡更小组来巡更
还有一种情况,如果是三个班次,四个班组来巡更呢

改进了一下提问,呵呵
[/Quote]

[Quote=引用 19 楼 septemson 的回复:]
如果每个参数都能变,即每天a个班次,共b个小组,一开始的状态是第c班次是d小组在做,问e天后c班次是哪个小组。方法如下:
首先,取得a,b的最小公倍数,假定是X。然后算出Y=X除以a(其实Y就是一个周期的天数)

然后,用e%y,得到Z,最后的答案就是(d+Z*a)%b 如果是0 则=b
[/Quote]

其实就是e=28,还是用我的方法,最后还是第二小组
icejd 2010-01-05
  • 打赏
  • 举报
回复
正在计算,呵呵
liherun 2010-01-05
  • 打赏
  • 举报
回复
((天数-1)*班次 +想知道的班次-1)% 小组数 +1

就是这样的
天数你自己计算
icejd 2010-01-05
  • 打赏
  • 举报
回复
这个天数有点别扭,事实是这样的
在作一个电子巡更程序,将一天24小时分为四个班次,同时有三个巡更小组按顺序依次进行巡更,
现在的情况是设定程序开始的时间为比如今天2010-01-05,初始运行时的班次为 二班次 ,初始运行时的巡更小组为 小组二 ,那么,我想请教的是,在2010-02-02那天,二班次是由哪个巡更小组来巡更
还有一种情况,如果是三个班次,四个班组来巡更呢

改进了一下提问,呵呵
liherun 2010-01-05
  • 打赏
  • 举报
回复
((天数-1)*班次 +想知道的班次-1)% 小组数 +1
septemson 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 septemson 的回复:]
如果每个参数都能变,即每天a个班次,共b个小组,一开始的状态是第c班次是d小组在做,问e天后c班次是哪个小组。方法如下:
首先,取得a,b的最小公倍数,假定是X。然后算出Y=X除以a(其实Y就是一个周期的天数)

然后,用e%y,得到Z,最后的答案就是(d+Z)%b

[/Quote]

最后答案还是有点问题,应该改成:
(d+Z*a)%b 如果是0 则=b
liherun 2010-01-05
  • 打赏
  • 举报
回复
((天数-1)*班次 +想知道的班次)% 小组数 +1
liherun 2010-01-05
  • 打赏
  • 举报
回复
((天数-1)*班次 %小组数 +想知道的班次)% 小组数+1
liherun 2010-01-05
  • 打赏
  • 举报
回复
26天后是不是第27天了
加载更多回复(15)

111,120

社区成员

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

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

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