找规律

 
题意很清楚~~
 
思路:
s[n]数组储存2^n  下标代表幂指数  
原数:1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21 22
变形:  1  2  1  4  1  2  1  8  1  2    1    4    1    2    1   16   1    2    1    4   1   2
原数:23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  ···· 64  ···  128 ··
变形: 1    8    1    2    1    4   1   2   1   32   1    2    1    4    1    2    1   ···  64  ···  128··
看到规律没~~~
 所有的变形数都是2^n,而且是有规律的出现。
  例如:
       1 每隔 2 出现一次
       2 每隔 4 出现一次
       4 每隔 8 出现一次
       8 每隔 16出现一次  
      ····  
 
题意很清楚~~~
思路:找规律~~~~
      [10,20] 之间可以的有 9 组且公共长度为 1  (19,20)没有   
      [20,30] 之间可以的有 9 组且公共长度为 2  (29,30)没有     
      [30,40] 之间可以的有 9 组且公共长度为 3  (39,40)没有     
      ···     
     [110,120] 之间可以的有 10 组公共长度为 11 有 9 组  公共长度为1的有一组(119,120)     
     [120,130] 之间可以的有 10 组公共长度为 12 有 9 组  公共长度为1的有一组(129,130)
      ···
     [180,190] 之间可以的有 10 组公共长度为 19 有 9 组  公共长度为1的有一组(189,190)
     [190,200] 之间可以的有 9  组公共长度为 19 有 9 组  (199,200)没有     
      ···
主要代码:
       
while(n>10) {
     b=n/x;   //去掉n的最后一位
     a=n%x;   //取n的最后一位
     sum += a*b;  //有a个公共长度为b的
     b = b-1;     //其余的[1, b-1]都要乘9
     sum += (9*(b*b+b)/2); //求和公式再乘9
     n=n/10;      //n去掉一位重复计算~~
}

 

题目链接:http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5319

思路:任意连续的四个数倒序时,经过题目要求的减法操作值都会变为0.

证明:  a, a+1, a+2, a+3. 代表连续的四个数。

  倒序时,| a+2  -  a+3 |= 1;  | a+1 -  1 | = a; | a – a | = 0;  

所以只需要判断 n%4 的余数就好。

  求最大值时,对n-1进行倒序,把n加到最后。

  求最小值时,对n  进行倒序。

过桥问题: 以下是构造N个人(N≥1)过桥最佳方案的方法:
  1) 如果N=1、2,所有人直接过桥。   
  2) 如果N=3,由最快的人往返一次把其他两人送过河。   
  3) 如果N≥4,设A、B为走得最快和次快的旅行者,过桥所需时间分别为a、b;而Z、Y为走得最慢和次慢的旅行者,过桥所需时间分别为z、y。那么     
      当2b>a+y时,使用模式一将Z和Y移动过桥;     
      当2b<a+y时,使用模式二将Z和Y移动过桥;     
      当2b=a+y时,使用模式一将Z和Y移动过桥。
  这样就使问题转变为N-2个旅行者的情形,从而递归解决之。

题目链接:http://acdream.info/problem?pid=1008
完全画图可以推出来的规律
  if(n<3) sum=0;
  if(n==3) sum=1;  
  if(n==4) sum=8;
  if(n==5) sum=35;
  if(n==6) sum=32;
  if(n>6)  sum=n*5; 
 
解题思路: http://blog.csdn.net/libin56842/article/details/26058357(自己一直没找到规律。。。)
 
 N为偶数时,  ans = N *  (N/2 - 1) * (N / 2 - 2) / 6;

 N为奇数时,   ans = N * (N/2) * (N / 2 + 1) / 6;

posted @ 2015-09-22 17:13  马晨  阅读(123)  评论(0)    收藏  举报