王守恩 发表于 2018-3-28 16:42:51

这串数最多有几个数?

在1——1024这1024个正整数中,选一串数,使这串数中的任意2个数相加,和都不相同。
这串数是:1,2,3,5,8,13,21,34,55,89,144,233,377,610,987。
这串数最多有15个数。还有更多的吗?

KeyTo9_Fans 发表于 2018-3-28 17:03:14

至少能找到28个:
1, 2, 3, 5, 8, 13, 21, 30, 39, 53, 74, 95, 128, 152, 182, 212, 258, 316, 374, 413, 476, 531, 546, 608, 717, 798, 862, 965

在这里找到的:
https://oeis.org/A011185

估计还能更多。

王守恩 发表于 2018-3-30 09:07:09

KeyTo9_Fans 发表于 2018-3-28 17:03
至少能找到28个:
1, 2, 3, 5, 8, 13, 21, 30, 39, 53, 74, 95, 128, 152, 182, 212, 258, 316, 374, 413, ...


太好了!谢谢KeyTo9_Fans! 不好意思,还是想问。
在1——1024这1024个正整数中,选一串数,使这串数中的任意3个数相加,和都不相同。
这串数:1,4,7,13,24,44,81,149,274,504,927, ...
这串数最多有几个数?谢谢!

northwolves 发表于 2018-3-31 23:00:27

https://bbs.emath.ac.cn/thread-2100-1-1.html

Sirius 发表于 2018-6-29 13:13:02

存在素数P,P(P—1)<N,则在1~N之中,最多可选P—1个数,两两之和不等。关于此类问题,有两个疑问,请各位老师指点一下。
1.如何证明选P个数不可以
2.好像不是任何N都可以,比如N=9,P=3,最多不止选2个数啊。

mathe 发表于 2018-6-29 15:20:48

这个题目采用链接中方法,选择P=31,可以构造出a=161,b=1,c=13时30个数:
1 8 9 19 95 147 166 186 191 232 265 269 291 307 320 334 388 460 483 495 523 540 572 587 593 596 654 702 704 738

mathe 发表于 2018-6-29 15:53:43

选择P=37,g=5,a=1329,b=1,c=1 并且抛弃两个元素,可以得到34个数的满足条件的解:
1 31 33 86 115 173 174 191 214 236 264 270 274 383 476 481 489 500 520 546 612 615 627 676 747 780 794 801 869 904 946 955 971 998

mathe 发表于 2018-6-29 16:02:46

#include <stdio.h>
#include <algorithm>
using namespace std;
#include <stdlib.h>
#define P 37
#define M (P*(P-1))
#define b 1
#define R 5 //R must be primitive root of prime P
#define D 3 //look for total P-D elements

int max_diff;
int gc,gb, ga;
//the function assume a<=c
int gcd(int a, int c)
{
    if(a==0)return c;
    return gcd(c%a, a);
}

void dump()
{
    printf("a=%d, b=%d, c=%d, diff = %d\n",ga,gb,gc,max_diff);
}

int main()
{
    int c,i;
    int buf;
    int r;
    int u,v;
    for(c=1;c<P/2;c+=2){
      if(gcd(c,P-1)>1)continue;
       u=b*(P-1); v=0;
       buf=u;
       for(i=1;i<P-1;i++){
            u*=R;u%=M;
            v+=c*P;v%=M;
            buf=(u+v)%M;
       }
       sort(buf,buf+P-1);
       for(i=D;i<P-1;i++){
         if(buf-buf>=max_diff){
               max_diff=buf-buf;ga=M-buf+1;gb=b;gc=c;dump();
         }
       }
       for(i=0;i<D;i++){
         if(buf+M-buf>=max_diff){
            max_diff=buf+M-buf;ga=M+1-buf;gb=b;gc=c;dump();
         }
       }
    }
    printf("a=%d, b= %d, c=%d, min_range %d\n",ga, gb,gc, M+1-max_diff);
   
    u=b*(P-1);v=ga%M;
    buf=(u+v)%M;
    for(i=1;i<P-1;i++){
       u*=R;u%=M;
       v+=gc*P;v%=M;
       buf=(u+v)%M;
    }
    sort(buf,buf+P-1);
    for(i=0;i<P-D;i++){
       printf("%d ",buf);
    }
    printf("\n");
    return 0;
}
页: [1]
查看完整版本: 这串数最多有几个数?