1.一个问题是平面上有很多点,如何找出一条直线经过最多的点?答案说可以用hash1算法解决,思路该是怎么样的?
2.编号为1到100的开关都朝上,现在依次这样做:编号为2的倍数的开关调转方向,编号为3的倍数的开关调转方向,......,编号为100的开关调转方向。最后开关朝上的编号是多少?

解决方案 »

  1.   

    第2题#include <iostream.h>
    void main()
    {
    int a[101];
    for(int i=0;i<101;i++)
    {
    a[i]=1;
    }
     
    for(int j=2;j<101;j++)
    {
    for(i=1;i<101;i++)
    {
      if(i%j==0)
      {
      if (a[i]==0)
      {
      a[i]=1;
      }
      else
      {
      a[i]=0;
      }
      }
    }
    }

    for ( i=1;i<101;i++)
    {
    if (a[i]==1)
    {
    cout<<i<<" ";
    }
    }
    }
    答案为1 4 9 16 25 36 49 64 81 100
      

  2.   

    1.一个问题是平面上有很多点,如何找出一条直线经过最多的点?答案说可以用hash1算法解决,思路该是怎么样的?最小二乘法?2.编号为1到100的开关都朝上,现在依次这样做:编号为2的倍数的开关调转方向,编号为3的倍数的开关调转方向,......,编号为100的开关调转方向。最后开关朝上的编号是多少?100内的最大最大质数?