找回密码
 欢迎注册
楼主: 王守恩

[讨论] 天平称重

[复制链接]
 楼主| 发表于 2018-4-13 16:19:22 | 显示全部楼层
本帖最后由 王守恩 于 2018-4-13 16:40 编辑
mathe 发表于 2018-4-12 13:41
我们现在可以专门找这种特殊模式

0,1,3,4,5,8 中间连续加6 ,    对于首尾差6(N-1)-44   (N


关键的问题是:
当中段的差是1,2,3,4,5,6,7,8,......时,
首段最后1个数是1,2,3,4,6,8,10,13,16,19,24,23,30,34,41,45,49,53,59,68,.....
我们还找不到这串数的规律!
谢谢mathe!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-4-14 20:48:48 | 显示全部楼层
https://cs.uwaterloo.ca/journals ... nson/robinson4.html
已经有人给出类似的数据了
s {$a_s$}
11 {1, 3, 4, 7, 8, 9, 16, 17, 21, 24, 35}
13 {1, 2, 5, 7, 10, 11, 19, 21, 22, 25, 29, 30, 43}
15 {1, 2, 5, 6, 8, 9, 13, 19, 22, 27, 29, 33, 40, 41, 56}
16 {1, 2, 5, 8, 10, 12, 19, 22, 23, 25, 30, 31, 36, 43, 45, 61}
19 {1, 2, 3, 6, 9, 11, 12, 15, 16, 27, 32, 37, 45, 48, 52, 55, 61, 62, 80}
20 {1, 2, 4, 5, 11, 13, 14, 19, 29, 35, 37, 43, 46, 47, 50, 52, 56, 58, 68, 88}
21 {1, 2, 3, 6, 10, 14, 17, 19, 26, 29, 36, 41, 49, 51, 54, 55, 58, 60, 67, 74, 95}
22 {1, 3, 5, 7, 8, 12, 14, 18, 26, 32, 33, 42, 43, 50, 60, 63, 68, 79, 81, 83, 97, 105}
24 {1, 2, 3, 5, 9, 12, 15, 17, 23, 28, 32, 35, 37, 44, 45, 66, 79, 82, 86, 91, 94, 102, 112, 118}

点评

这里漏了17的数据,24也是错的  发表于 2018-4-20 19:48
附件里面16对应的数据错了  发表于 2018-4-14 21:37
这里16的数据列出了,19的数据比我的好(我搜索的范围比他的小一点)  发表于 2018-4-14 21:06

评分

参与人数 1威望 +2 金币 +2 贡献 +2 经验 +2 鲜花 +2 收起 理由
KeyTo9_Fans + 2 + 2 + 2 + 2 + 2 链接有参考价值

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-4-14 21:39:59 | 显示全部楼层
这里是我的代码,其中R是一个参数,越小速度越快,但是搜索范围越小。
到现在为止,我还没有发现需要用到R>=2的。而K>=19时,我只搜索过R==0的情况,所以没有找到那个数据
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>

  4. #ifndef K
  5. #define K 8
  6. #endif
  7. #ifndef R
  8. #define R 1
  9. #endif
  10. #define UPBOUND 40960
  11. unsigned short data[K+R];
  12. unsigned short sumbuf[UPBOUND];
  13. unsigned short diffbuf[UPBOUND];
  14. unsigned short modbuf[K];
  15. int rcount;
  16. int level;
  17. int next_sum,next_diff;

  18. int cur_best=10000000;
  19. void output()
  20. {
  21.     int i,j;
  22.     int b=data[level-1]+K;
  23.     int tindex=1;
  24.     for(i=b;i<data[level-1]+b;i++)
  25.     {
  26.        if(sumbuf[i]==0){
  27.            int h=(i-data[level-1]);
  28.            int min_index=-1;
  29.            for(j=0;j<level;j++){
  30.               if(h>=data[j]&&(h-data[j])%K==0){
  31.                   min_index=(h-data[j])/K;
  32.               }
  33.            }
  34.            if(min_index<0)return;
  35.            if(min_index>tindex)tindex=min_index;
  36.        }
  37.     }
  38.     for(i=0;i<data[level-1];i++){
  39.        if(diffbuf[i]==0){
  40.            int h = data[level-1]-i;
  41.            int min_index=-1;
  42.            for(j=0;j<level;j++){
  43.                 if(h<=data[j]&&(data[j]-h)%K==0){
  44.                     min_index=(data[j]-h)/K;
  45.                     break;
  46.                 }
  47.            }
  48.            if(min_index<0)return;
  49.            if(min_index>tindex)tindex=min_index;
  50.        }
  51.     }
  52.     if(K*(level-1)-data[level-1]<=cur_best){
  53.        cur_best=K*(level-1)-data[level-1];
  54.        printf("%d,>=%d | ",K*(level-1)-data[level-1],tindex);
  55.        for(i=0;i<level;i++)printf(" %u",(unsigned int)data[i]);
  56.        printf("\n");
  57.        fflush(stdout);
  58.     }
  59. }

  60. int push(int x)
  61. {
  62.     int i;
  63.     int r=x%K;
  64.     if(modbuf[r]>0){
  65.         if(rcount>=R)return 0;
  66.         rcount++;
  67.     }
  68.     modbuf[r]++;
  69.     for(i=0;i<level;i++){
  70.        sumbuf[data[i]+x]++;
  71.        diffbuf[x-data[i]]++;
  72.     }
  73.     sumbuf[x+x]++;diffbuf[0]++;
  74.     data[level++]=x;
  75.     for(i=next_sum;i<UPBOUND;i++){
  76.        if(sumbuf[i]==0)break;
  77.     }
  78.     next_sum=i;
  79.     for(i=next_diff;i<UPBOUND;i++){
  80.        if(diffbuf[i]==0)break;
  81.     }
  82.     next_diff=i;
  83.     if(next_sum==UPBOUND||next_diff==UPBOUND){
  84.        fprintf(stderr,"UPBOUND overflow\n");
  85.        exit(-1);
  86.     }
  87. }

  88. void pop()
  89. {
  90.     int x=data[--level];
  91.     int i;
  92.     int r=x%K;
  93.     --modbuf[r];
  94.     if(modbuf[r]>0){
  95.        rcount--;
  96.     }
  97.     sumbuf[x+x]--;diffbuf[0]--;
  98.     for(i=0;i<level;i++){
  99.        sumbuf[data[i]+x]--;
  100.        diffbuf[x-data[i]]--;
  101.     }
  102.     for(i=0;i<next_sum;i++){
  103.        if(sumbuf[i]==0)break;
  104.     }
  105.     next_sum=i;
  106.     for(i=0;i<next_diff;i++){
  107.        if(diffbuf[i]==0)break;
  108.     }
  109.     next_diff=i;
  110. }

  111. void search(int startv)
  112. {
  113.     int i;
  114.     if(level-rcount>=K&&data[level-1]+K<=next_sum){
  115.         output();
  116.     }
  117.     for(i=startv;i<=next_sum&&i<=K-1+data[level-1];++i){
  118.         if(push(i)){
  119.             search(i+1);
  120.             pop();
  121.         }
  122.     }
  123. }

  124. int main()
  125. {
  126.     data[0]=0;data[1]=1;modbuf[0]=modbuf[1]=1;
  127.     sumbuf[0]=sumbuf[1]=sumbuf[2]=1;rcount=0;
  128.     diffbuf[0]=2;diffbuf[1]=1;next_diff=2;
  129.     next_sum = 3;
  130.     level=2;
  131.     search( 2);
  132. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-4-14 21:45:45 | 显示全部楼层
下面这个代码可以进一步验证我们给出的模式是合法的
其中第一个输入参数M就是那个中间重复的差值,
然后要输入我们需要验证的数列长度的范围
比如上面16对应的数据,我们可以分别输入
16
65
70
0,1, 2, 5, 8, 10, 12, 19, 22, 23, 25, 30, 31, 36, 43, 45, 61
(需要注意我们的模式比链接中给出的前面多一个0,数据之间可以用,或空格分隔)
然后如果验证失败会报错,不然会输出补充好的完整数据
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <vector>
  5. #include <ctype.h>

  6. char line[10240];
  7. int main()
  8. {
  9.     int M,N;
  10.     int s, e,i,j;
  11.     int *sumbuf;
  12.     char *endp, *startp;
  13.     printf("Please input M:");
  14.     scanf("%d",&M);
  15.     if(M<1){
  16.          fprintf(stderr,"M should be no less than 1\n");
  17.          return -1;
  18.     }
  19.     printf("Please input lowerbound of N:");
  20.     scanf("%d",&s);
  21.     printf("Please input upperbound of N:");
  22.     scanf("%d",&e);
  23.     if(s>e||s<1){
  24.          fprintf(stderr,"s=%d, e=%d is out of range\n",s,e);
  25.          return -1;
  26.     }
  27.     printf("Please input prefix pattern:");
  28. start:
  29.     gets(line);
  30.     std::vector<int> d;
  31.     startp=line;
  32.     while(startp!=NULL){
  33.         while(*startp!='\0'&&(isspace(*startp)||*startp==','))startp++;
  34.         if(*startp=='\0')break;
  35.         int x=(int)strtol(startp,&endp, 10);
  36.         startp=endp;
  37.         d.push_back(x);
  38.     }
  39.     if(d.size()==0){
  40.        goto start;
  41.     }
  42.     if(d.size()*2>s){
  43.         fprintf(stderr,"s=%d is too small for prefix size %d\n",s,(int)d.size());
  44.         return -1;
  45.     }
  46.     if(d[0]!=0){
  47.         fprintf(stderr,"The first number must b 0\n");
  48.         return -1;
  49.     }
  50.     for(i=1;i<d.size();i++)if(d[i-1]>=d[i]){fprintf(stderr,"input pattern must be monotonic increasing\n");return -1;}
  51.     int maxsize = (e-2*d.size()+1)*M+d[d.size()-1]*2+1;
  52.     sumbuf=(int *)malloc(sizeof(int)*(2*maxsize+1));
  53.     for(N=s;N<=e;N++){
  54.         int cm = N-2*d.size()+1;
  55.         int h = d[d.size()-1];
  56.         int csize = cm*M+d[d.size()-1]*2;
  57.         memset(sumbuf,0,sizeof(int)*(2*csize)+1);
  58.         for(i=0;i<d.size();++i){
  59.              for(j=0;j<=i;j++){
  60.                  int v=d[i]+d[j];
  61.                  sumbuf[v]++;sumbuf[2*csize-v]++;
  62.                  v=d[j]-d[i];
  63.                  sumbuf[csize+v]++;sumbuf[csize-v]++;
  64.              }
  65.         }
  66.         for(i=0;i<d.size();++i){
  67.              for(j=1;j<=cm;j++){
  68.                  sumbuf[d[i]+h+M*j]++;
  69.                  sumbuf[csize-d[i]+h+M*j]++;
  70.              }
  71.         }
  72.         for(i=2;i<=2*cm;i++){
  73.              sumbuf[2*h+M*i]++;
  74.         }
  75.         for(i=0;i<2*csize+1;i++){
  76.              if(sumbuf[i]==0){
  77.                  break;
  78.              }
  79.         }
  80.         if(i<2*csize+1){
  81.               printf("check failed for N=%d\n",N);
  82.         }else{
  83.               printf("check passed for N=%d\n",N);
  84.               for(i=0;i<d.size();i++)printf("%d ",d[i]);
  85.               for(i=0;i<cm;i++)printf("%d ",h+(i+1)*M);
  86.               for(i=d.size()-2;i>=0;i--)printf("%d ",h+cm*M+h-d[i]);
  87.               printf("\n");fflush(stdout);
  88.         }
  89.     }
  90. }
复制代码


Please input M:16
Please input lowerbound of N:65
Please input upperbound of N:70
Please input prefix pattern:0,1, 2, 5, 8, 10, 12, 19, 22, 23, 25, 30, 31, 36, 43, 45, 61
check failed for N=65
check failed for N=66
check failed for N=67
check failed for N=68
check failed for N=69
check failed for N=70

Please input M:16
Please input lowerbound of N:65
Please input upperbound of N:70
Please input prefix pattern:0 1 2 3 7 8 9 12 15 22 26 30 36 37 43 45
check passed for N=65
0 1 2 3 7 8 9 12 15 22 26 30 36 37 43 45 61 77 93 109 125 141 157 173 189 205 221 237 253 269 285 301 317 333 349 365 381 397 413 429 445 461 477 493 509 525 541 557 573 589 591 597 598 604 608 612 619 622 625 626 627 631 632 633 634
check passed for N=66
0 1 2 3 7 8 9 12 15 22 26 30 36 37 43 45 61 77 93 109 125 141 157 173 189 205 221 237 253 269 285 301 317 333 349 365 381 397 413 429 445 461 477 493 509 525 541 557 573 589 605 607 613 614 620 624 628 635 638 641 642 643 647 648 649 650
check passed for N=67
0 1 2 3 7 8 9 12 15 22 26 30 36 37 43 45 61 77 93 109 125 141 157 173 189 205 221 237 253 269 285 301 317 333 349 365 381 397 413 429 445 461 477 493 509 525 541 557 573 589 605 621 623 629 630 636 640 644 651 654 657 658 659 663 664 665 666
check passed for N=68
0 1 2 3 7 8 9 12 15 22 26 30 36 37 43 45 61 77 93 109 125 141 157 173 189 205 221 237 253 269 285 301 317 333 349 365 381 397 413 429 445 461 477 493 509 525 541 557 573 589 605 621 637 639 645 646 652 656 660 667 670 673 674 675 679 680 681 682
check passed for N=69
0 1 2 3 7 8 9 12 15 22 26 30 36 37 43 45 61 77 93 109 125 141 157 173 189 205 221 237 253 269 285 301 317 333 349 365 381 397 413 429 445 461 477 493 509 525 541 557 573 589 605 621 637 653 655 661 662 668 672 676 683 686 689 690 691 695 696 697 698
check passed for N=70
0 1 2 3 7 8 9 12 15 22 26 30 36 37 43 45 61 77 93 109 125 141 157 173 189 205 221 237 253 269 285 301 317 333 349 365 381 397 413 429 445 461 477 493 509 525 541 557 573 589 605 621 637 653 669 671 677 678 684 688 692 699 702 705 706 707 711 712 713 714
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-4-14 22:29:19 | 显示全部楼层
本帖最后由 王守恩 于 2018-4-14 22:34 编辑
王守恩 发表于 2018-4-14 21:50
1,用n个数算出S(n)个连续数来,n:S(n)最大是1:2K。说明K越大越好。
2,当K(中段的差)是1,2,3,4,5,6 ...


1,用n个数算出S(n)个连续数来,n:S(n)最大是1:2K。说明K越大越好。
2,当K(中段的差)是1,2,3,4,5,6,7,8,......时,A=中段第1个数 - K。
我们已经找到A对应是1,2,3,4,6,8,10,13,16,19,24,23,30,34,41,45,49,53,61,68,74,83, ? ,94.....
我们还是找不到这串数的规律!
3,我们不妨用这串数先替代A:1,2,3,4,6,8,10,13,16,19,23,27,31,35,40,45,50,55,60,66,72,78,84,90......
看能不能给我们带点启发。
4,我们只要搜索首段的K个数满足:0——中段的第1个数(不包括中段的第1个数)之间的数即可。
中段的数和尾段的数不用计算,肯定满足。
谢谢mathe!

补充内容 (2018-4-15 12:56):
首段的最后1个数 + K不一定等于中段的第1个数 - K。但中段的第1个数 - K,这个数肯定会在首段出现。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-4-15 12:18:15 | 显示全部楼层
本帖最后由 王守恩 于 2018-4-15 12:32 编辑

mathe 发表于 2018-4-12 13:41
我们现在可以专门找这种特殊模式

0,1,3,4,5,8 中间连续加6 ,    对于首尾差6(N-1)-44   (N


我们的公式没有问题。
链接给出的数据应该是对的,链接没有给出A=12,14,17,18,23的数据是因为:
第1条:A=12可以取消。第2条:A=14可以取消。第5,6条:A=18可以取消。
第4,5,6条:好像是说,A=17不能取消?要不A=17小于我们的49?
第8条:好像是说,A=21可以取消?第9,10条:好像是说,A=23肯定小于88?

\(1,\D\frac{41}{537}=\frac{2×11+19}{(2×24+11×20)×2+1}=\frac{2×12+17}{(2×23+12×18)×2+1=525}=\frac{2×13+15}{(2×30+13×16)×2+1}\)

\(2,\D\frac{44}{615}=\frac{2×13+18}{(2×30+13×19)×2+1}=\frac{2×14+16}{(2×34+14×17)×2+1=613}=\frac{2×15+14}{(2×41+15×15)×2+1}\)

\(3,\D\frac{53}{885}=\frac{2×15+23}{(2×41+15×24)×2+1}=\frac{2×16+21}{(2×45+16×22)×2+1}\)

\(4,\D\frac{57}{1013}=\frac{2×16+25}{(2×45+16×26)×2+1}=\frac{2×17+23}{(2×49+17×24)×2+1}\)

\(5,\D\frac{58}{1047}=\frac{2×17+24}{(2×49+17×25)×2+1}=\frac{2×18+22}{(2×53+18×23)×2+1=1041}=\frac{2×19+20}{(2×61+19×21)×2+1=1043}\)

\(6,\D\frac{59}{1081}=\frac{2×17+25}{(2×49+17×26)×2+1}=\frac{2×18+23}{(2×53+18×24)×2+1=1077}=\frac{2×19+21}{(2×61+19×22)×2+1}\)

\(7,\D\frac{63}{1233}=\frac{2×19+25}{(2×61+19×26)×2+1}=\frac{2×20+23}{(2×68+20×24)×2+1}\)

\(8,\D\frac{68}{1433}=\frac{2×20+28}{(2×68+20×29)×2+1}=\frac{2×21+26}{(2×74+21×27)×2+1=1431}=\frac{2×22+24}{(2×83+22×25)×2+1}\)

\(9,\D\frac{79}{1917}=\frac{2×22+35}{(2×83+22×36)×2+1}=\frac{2×23+33}{(2×88+23×34)×2+1}=\frac{2×24+31}{(2×94+24×32)×2+1=1913}\)

\(10,\D\frac{80}{ ? }=\frac{2×22+36}{(2×83+22×37)×2+1=1961}=\frac{2×23+34}{(2×88+23×35)×2+1=1963}=\frac{2×24+32}{(2×94+24×33)×2+1=1961}\)






毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-4-15 19:10:50 | 显示全部楼层
本帖最后由 王守恩 于 2018-4-15 19:21 编辑


我们不妨用这串数先替代A:1,2,3,4,6,8,10,13,16,19,23,27,31,35,40,45,50,55,60,66,72,78,84,90......
看能不能给我们带点启发。

\(\D\frac{17}{105}=\frac{2×5+7}{(2×6+5×8)×2+1}=\frac{2×6+5}{(2×8+6×6)×2+1}\)

\(\D\frac{21}{153}=\frac{2×6+9}{(2×8+6×10)×2+1}=\frac{2×7+7}{(2×10+7×8)×2+1}\)

\(\D\frac{23}{181}=\frac{2×7+9}{(2×10+7×10)×2+1}=\frac{2×8+7}{(2×13+8×8)×2+1}\)

\(\D\frac{27}{245}=\frac{2×8+11}{(2×13+8×12)×2+1}=\frac{2×9+9}{(2×16+9×10)×2+1}\)

\(\D\frac{31}{317}=\frac{2×9+13}{(2×16+9×14)×2+1}=\frac{2×10+11}{(2×19+10×12)×2+1}\)

\(\D\frac{33}{357}=\frac{2×10+13}{(2×19+10×14)×2+1}=\frac{2×11+11}{(2×23+11×12)×2+1}\)

\(\D\frac{37}{445}=\frac{2×11+15}{(2×23+11×16)×2+1}=\frac{2×12+13}{(2×27+12×14)×2+1}\)

\(\D\frac{41}{541}=\frac{2×12+17}{(2×27+12×18)×2+1}=\frac{2×13+15}{(2×31+13×16)×2+1}\)

\(\D\frac{45}{645}=\frac{2×13+19}{(2×31+13×20)×2+1}=\frac{2×14+17}{(2×35+14×18)×2+1}\)

\(\D\frac{47}{701}=\frac{2×14+19}{(2×35+14×20)×2+1}=\frac{2×15+17}{(2×40+15×18)×2+1}\)

\(\D\frac{51}{821}=\frac{2×15+21}{(2×40+15×22)×2+1}=\frac{2×16+19}{(2×45+16×20)×2+1}\)

\(\D\frac{55}{949}=\frac{2×16+23}{(2×45+16×24)×2+1}=\frac{2×17+21}{(2×50+17×22)×2+1}\)

\(\D\frac{59}{1085}=\frac{2×17+25}{(2×50+17×26)×2+1}=\frac{2×18+23}{(2×55+18×24)×2+1}\)

\(\D\frac{63}{1229}=\frac{2×18+27}{(2×55+18×28)×2+1}=\frac{2×19+25}{(2×60+19×26)×2+1}\)

\(\D\frac{65}{1305}=\frac{2×19+27}{(2×60+19×28)×2+1}=\frac{2×20+25}{(2×66+20×26)×2+1}\)

\(\D\frac{69}{1465}=\frac{2×20+29}{(2×66+20×30)×2+1}=\frac{2×21+27}{(2×72+21×28)×2+1}\)

\(\D\frac{73}{1633}=\frac{2×21+31}{(2×72+21×32)×2+1}=\frac{2×22+29}{(2×78+22×30)×2+1}\)

\(\D\frac{77}{1809}=\frac{2×22+33}{(2×78+22×34)×2+1}=\frac{2×23+31}{(2×84+23×32)×2+1}\)

\(\D\frac{81}{1993}=\frac{2×23+35}{(2×84+23×36)×2+1}=\frac{2×24+33}{(2×90+24×34)×2+1}\)

\(\D\frac{85}{2185}=\frac{2×24+37}{(2×90+24×38)×2+1}=\frac{2×25+35}{(2×96+25×36)×2+1}\)

\(\D\frac{87}{2285}=\frac{2×25+37}{(2×96+25×38)×2+1}=\frac{2×26+35}{(2×103+26×36)×2+1}\)

\(\D\frac{91}{2493}=\frac{2×26+39}{(2×103+26×40)×2+1}=\frac{2×27+37}{(2×110+27×38)×2+1}\)

\(\D\frac{95}{2709}=\frac{2×27+41}{(2×110+27×42)×2+1}=\frac{2×28+39}{(2×117+28×40)×2+1}\)

\(\D\frac{99}{2933}=\frac{2×28+43}{(2×117+28×44)×2+1}=\frac{2×29+41}{(2×124+29×42)×2+1}\)

\(\D\frac{103}{3165}=\frac{2×29+45}{(2×124+29×46)×2+1}=\frac{2×30+43}{(2×138+30×44)×2+1}\)

\(\D\frac{107}{3405}=\frac{2×30+47}{(2×131+30×48)×2+1}=\frac{2×31+45}{(2×138+31×46)×2+1}\)

\(\D\frac{449}{55381}=\frac{2×120+209}{(2×1245+120×210)×2+1}=\frac{2×121+207}{(2×1261+121×208)×2+1}\)

\(\D\frac{637}{109713}=\frac{2×168+301}{(2×2060+168×302)×2+1}=\frac{2×169+299}{(2×2078+169×300)×2+1}\)

\(\D\frac{797}{170261}=\frac{2×209+379}{(2×2855+209×380)×2+1}=\frac{2×210+377}{(2×2875+210×378)×2+1}\)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-4-17 21:15:00 | 显示全部楼层
本帖最后由 王守恩 于 2018-4-18 06:59 编辑


我还是在想:K=22,23,24,...., 求A,有链接说得这么困难吗?

下面的算法应该没有问题。
例  K=6,6的余数有0,1,2,3,4,5计6种。
其中  0只能是0,  1只能是1,
         2只能是2,8中的1个,
         3只能是3,9中的1个,
         4只能是4,10中的1个,
         5只能是5,11中的1个,
根据2,3两者只能变动1个,4,5已无法变动。
得  A=0,1,3,4,5,8。8+6=14
用A可以算出0——14(不含)之间的数。

例  K=11,11的余数有0——10计11种。
其中  0只能是0,   1只能是1,
         2只能是2,13,24中的1个,
         3只能是3,14,25中的1个,
         4只能是4,15,26中的1个,
         5只能是5,16,27中的1个,
         6只能是6,17,28中的1个,
         7只能是7,18,29中的1个,
         8只能是8,19,30中的1个,
         9只能是9,20,31中的1个,
         10只能是10,21,中的1个,
根据2,3两者只能变动1个,4,5两者只能变动1个。
当然可以增加一些其他的规律。
得  A=0,1,3,4,7,8,9,16,17,21,24。24+11=35
用A可以算出0——35(不含)之间的数。

例  K=18,18的余数有0——17计18种。
其中  0只能是0,    1只能是1,
         2只能是2,20,38中的1个,
         3只能是3,21,39中的1个,
         4只能是4,22,40中的1个,
         5只能是5,23,41中的1个,
         6只能是6,24,42中的1个,
         7只能是7,25,43中的1个,
         8只能是8,26,44中的1个,
         9只能是9,27,45中的1个,
       10只能是10,28,46中的1个,
       11只能是11,29,47中的1个,
       12只能是12,30,48中的1个,
       13只能是13,31,49中的1个,
       14只能是14,32,50中的1个,
       15只能是15,33,51中的1个,
       16只能是16,34,52中的1个,
       17只能是17,35,53中的1个,
根据2,3两者只能变动1个,4,5两者只能变动1个。
当然可以增加一些其他的规律。
得  A=0,1,2,3,5,6,10,11,13,14,26,27,34,40,43,48,51,53。53+18=71
用A可以算出0——71(不含)之间的数。

对于K来说,我们称小于K的叫一阶余数,
小于2K的叫二阶余数,小于3K的叫三阶余数
为让A尽可能大,我们尽可能用高阶余数,
结合(K - 1)的数据,参考对比预估的A,
对某个K来说,A的搜索范围还是可以预判的。

谢谢mathe!K=22,23,24,....,能再来几个?

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-5-7 12:59:58 | 显示全部楼层
本帖最后由 王守恩 于 2018-5-7 15:40 编辑
mathe 发表于 2018-4-11 11:46
我们可以只考虑a0=0,...,an 而和正好完全覆盖0到2*an所有情况的解,得出如下:

3:


有这样一串数:
0004[000009]  0,1,3,4
0008[000027]  0,1,3,4,9,10,12,13
0016[000081]  0,1,3,4,9,10,12,13,27——40
0032[000243]  0,1,3,4,9,10,12,13,27——40,81——121
0064[000729]  0,1,3,4,9,10,12,13,27——40,81——121,243——364
0128[002187]  0,1,3,4,9,10,12,13,27——40,81——121,243——364,729——1093
0256[006561]  0,1,3,4,9,10,12,13,27——40,81——121,243——364,729——1093,2187——3280
0512[019683]  0,1,3,4,9,10,12,13,27——40,81——121,243——364,729——1093,2187——3280,6561——9841
1024[059049]  0,1,3,4,9,10,12,13,27——40,81——121,243——364,729——1093,2187——3280,6561——9841,19683——29524
2048[177147]  0,1,3,4,9,10,12,13,27——40,81——121,243——364,729——1093,2187——3280,6561——9841,19683——29524,59049——88573
4096[531441]  0,1,3,4,9,10,12,13,27——40,81——121,243——364,729——1093,2187——3280,6561——9841,19683——29524,59049——88573,177147——265720
...............................
这串数,效益真不敢叫人恭维,但是省事,后面的数,只要慢慢增加就可以。至少有这样一串数,在前面引路,心里会踏实些。
这样的一串数,肯定还有比这更好的,大家有什么好点子,感谢不尽!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-5-10 12:04:37 | 显示全部楼层
mathe 发表于 2018-4-11 11:46
我们可以只考虑a0=0,...,an 而和正好完全覆盖0到2*an所有情况的解,得出如下:

3:

有这样一串数:
3,5,9,11,21,23,27,29,57,59,63,65,75,77,81,83,165,167,171,173,183,185,189,191,
219,221,225,227,237,239,243,245,489,491,495,497,507,509,513,515,543,.............
说明:
1,每次取2个数(允许重复取),相加的和可以是全体偶数。
06=03+03
08=03+05
10=05+05
12=03+09
14=05+09
16=05+11
18=09+09
20=09+11
22=11+11
24=03+21
26=05+21
28=05+23
...................
2,在这里:
我们用0001个数,算出的最大偶数是6,
我们用0002个数,算出的最大偶数是10,
我们用0004个数,算出的最大偶数是22,
我们用0008个数,算出的最大偶数是58,
我们用0016个数,算出的最大偶数是166,
我们用0032个数,算出的最大偶数是490,
我们用0064个数,算出的最大偶数是1462,
我们用0128个数,算出的最大偶数是4378,
我们用0256个数,算出的最大偶数是13126,
我们用0512个数,算出的最大偶数是39370,
我们用1024个数,算出的最大偶数是118102,
我们用2048个数,算出的最大偶数是354298,
我们用4096个数,算出的最大偶数是1062886,
我们用8192个数,算出的最大偶数是3188650,
................
3,朋友!还可以去掉一些数吗?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-21 21:30 , Processed in 0.040609 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表