假设有总共有10个数,分别是:
1,2,3,4,5,6,7,8,9,10
他们分成3个集合,分别为:
集合1:{1,3,7}
集合2:{2,4,5,8,10}
集合3:{6,9}
问题:如何判断一个随机的数:比如num=rand()%10+1;是否属于一个集合(这个集合也是随机产生的),比如:group=rand()%3+1;
要求:代码越精简越好;void main()
{
   int num = rand()%10+1;
   int group =rand()%3+1;  //如何判断
}

解决方案 »

  1.   

    没说清楚吧int group =rand()%3+1;这是一个集合? 只有一个数啊  你的集合怎么随机的
      

  2.   


    //初始化集合
    int Group[10]={0};
    for(int i=0;i!=5;++i)
     Group[rand()%10] =1;//1是集合Group的编号,rand()%10+1 这个数属于这个集合int num = rand()%10+1;
    //判断这个数属于哪个集合
    printf("is :%d",Group[num-1]);
      

  3.   

    int group =rand()%3+1;
    表示集合的编号,
    如果group=1;表示集合1:{1,3,7}
    如果group=2;表示集合2:{2,4,5,8,10}
    如果group=3;表示集合3:{6,9}比如num=4;
        group = 2;
    那么程序的结论是:
    4属于集合2;
      

  4.   

    我没表述好:
    问题:如何判断一个随机的数:比如num=rand()%10+1;是否属于一个集合(这个集合的集合号也是随机产生的),比如:group=rand()%3+1;group表示一个集合号
      

  5.   

    int groupNum=0;
    if (num==6||num==9)
    {
    groupNum=3;
    }
    else if (num==1||num==3||num==7)
    {
    groupNum=1;
    }
    else 
    {
    groupNum=2;
    }
    if (group==groupNum)
    {
    cout<<" YES "<<endl;
    }
    else
    cout<<" NO "<<endl;
      

  6.   


    同学你没弄清楚题哦。 
    LZ是问你
    int num = rand()%10+1;            //num的范围是从1到10随机选一个
    int group =rand()%3+1;            //group的范围是1-3随机选一个他有三个集合在上面写着呢。。叫你判断num的数是否属于group这个集合里面的数。。
      

  7.   

    好吧,那就分析 1 3 7 表示为 1000101 ==> 69
    2 4 5 8 10 表示为 1010011010 ==> 666
    6 9 ==> 100100000 ==> 288已知
    int num = rand()%10+1;
    int group =rand()%3+1;则
    int Groups[3]={69,666,288};puts(Groups[group]&(1<<num)?"yes":"no")
      

  8.   

    int num = rand()%10+1;
    int group =rand()%3+1;此处从1开始,所以上面要减一也从0开始才行
      

  9.   


    1     1
    3    11
    7   1112    10
    4   100
    5   101
    8  1000
    10 10106   110
    9  1001
    还以为你要问最快的方式,原来是代码最少
    int i = rand() % 10 + 1;
    unsigned long ul = i;if (ul % 2 == 0)
      printf("set 2\n");
    else
    if (ul % 3 == 0 && ul / 3 > 1)
      printf("set 3\n");
    else
      printf("set 1\n");
      

  10.   

    long map[10] = {0,1,0,1,1,2,0,1,2,1};
    int num = rand()%10;
    int group =rand()%3;
    cout << map[num] == group ? "in" : "out" << endl;在简化就去掉变量的声明
      

  11.   

    to 13楼:
    if (ul % 2 == 0)
      printf("set 2\n");
    集合2还有一个5呢