如图有A B C三组,(勾选完成后会返回一个值,该值是根据以下规则算出来的,)1.如果只勾选A组中的

发布时间:2021-02-27 11:50:52

如图有A B C三组,(勾选完成后会返回一个值,该值是根据以下规则算出来的,)1.如果只勾选A组中的,得到的结果是他们对应的值相加再减去 (13 *(勾选的个数-1))2.如果只勾选B组中的,得到的结果是他们对应的值相加再减去 (14 *(勾选的个数-1))3.如果ABC组混合勾选了,那么各组以上面2条规则算出结果后,将各组的结果值相加,相加完后减去(12 *(混合的组数-1)) (注:混合的组数

网友回答

没必要把条目的值,设置的这么复杂.如果是由你来编程,你可以把从A1、A2……A5,到B1……B4、C1,顺序设置成十进制的1、10、100、1000、10000…….条目未选,就加0,选择了,就加上对应的数值.这样把最终的和值当做字符串处...
======以下答案可供参考======
供参考答案1:
A选29,45,B选270,526,1038,C选2060可以得到3903
供参考答案2:
1.没有被勾选上。
2.B组和C组全选,从而算出A组只有前两项勾选上了。
供参考答案3:
你是面试遇到这道题?好像是把简单的问题搞复杂了来弄了。
首先稍微分析下各个值的来历:
A组:1:29 = a
2:45 = 2a - 1 * 13
3:77 = 4a - 3 * 13(注意原来这里顺序有所颠倒,由小到大排后是这样)
4:141 = 8a - 7 * 13
B组5:270 =16a - 15 * 13 +1
6:526 =32a - 31 * 13 +1
7:1038=64a - 63 * 13 +1
C组8:2060=128a- 127 * 13 -1
算法:设最后值为M。
1,如果M >= 2060 那么当然8是被选上的,令M= M - 2060 + 12 ;此时如果M 2,M= M - 13 ;
3, 求M/16的余数,设为X0,
如果X0 = 0,则只有A区有被选;
如果X0 = 1,则只有B区有被选,M= M - 1;
如果X0 = 2,则A,B区都有被选,M= M - 2;
4,Z = M / 16.对Z做长除法除以2,即:
Z / 2 = Z1 余 X1
Z1 / 2 = Z2 余 X2
... Zn-1 / 2 = Zn 余 Xn
一直做到商Zn = 0 就停止,X1为1表示1号项被选上,X1为0表示1号项没被选上;X2为1表示2号项被选上,X2为0表示2号项没被选上;
...Xn为1表示n号项被选上,Xn为0表示n号项没被选上。其他未出现的项都没被选上。算法结束。
比如3903
1,3903 > 2
以上问题属网友观点,不代表本站立场,仅供参考!