1 n*n个小正方形,有几个正方形?

1.把正方形看做左下的顶点2.顶点可以左右,上下移动,用(x,y)表示,移动的结果跟顺序没有关系。3一条边正方形x,y<=n次,k边x,y<=(n-k+1)次

4总就是1^2+2^2+...+n^2=n(n+1)(2n+1)/6

2一个有序循环数列,把前面的那段放到尾,查找一个数?

3、

View Code
 1 #include<stdio.h>
 2 int main(void)
 3 {
 4  //(blue,red) 的个数用(x,y)来表示,y=2-x,x=0,1,2;
 5  int num[3]={1, 1, 1};//0表示不可能是解,1表示是解
 6  int num1[3]={1, 1, 1};
 7  int x1,x2,x3,i,j,sum;
 8  for (x1=0;x1<=2;x1++)//A
 9  {
10   for (x2=0;x2<=2;x2++)//B
11   {
12    for(x3=0;x3<=2;x3++)//C
13    {
14     //           A、                 B、                 C不知道的必要条件
15     if (x2+x3==0||x2+x3==4||x1+x3==0||x1+x3==4||x1+x2==0||x1+x2==4)
16     {
17      continue;
18     }
19     //初步筛选后的(A,B,C)组合
20     //判断C解是否唯一
21     for (i=0;i<=2;i++)
22     {
23      num[i]=1;
24      if (x1+i==0||x1+i==4||x2+i==0||x2+i==4)
25      {
26       num[i]=0;
27       continue;
28      }
29      //B解是否唯一
30      for (j=0;j<=2;j++)
31      {
32       num1[j]=1;
33       if (x1+j==0||x1+j==4||j+i==0||j+i==4)
34       {
35        num1[j]=0;
36       }
37      }
38      sum=num1[0]+num1[1]+num1[2];
39      if (sum==1)
40      {
41       num[i]=0;
42      }
43     }
44     sum=num[0]+num[1]+num[2];
45     if (sum==1)
46     {
47      continue;
48     }
49     
50     
51     printf("A is %d,B is %d,C is %d\n", x1,x2,x3);   
52    }
53   }
54  }
55  
56  return 0;
57 }

4、query一直在增加,假设用n来表示,只能保存m条,怎么实现每个query等概率保存?
每次产生的最新的query:m/n保存即可;数学归纳一下即可! 不过有些别扭,一般是抽个样,多大的概率。现在是反过来多大概率保存!