8.把0—9这十个数字填到右图的圆圈内,使得五条线上的数字和构成一个等差数列,而且这个等差数列的各项之和为55,那么这个等差数列的公差有[b]2[/b]种可能的取值。

[img]http://dl2.iteye.com/upload/attachment/0091/4383/6fc35b84-a9e5-3455-a0dc-fd4aa383b5dd.png[/img]

解:设顶点分别为ABCDE,有45+A+B+C+D+E=55, 
所以A+B+C+D+E=10,则除之外的另外5个数(即边上的)为45-10=35, 利用求和公式 5(A1+A1+4D)/2=55, 得A1+2d=11,A1大于等于6,且为奇数, 只能取7或9   这样d只能为1或者2    经试验能填出来  
两种情况  公差d等于1或者2。

package com.ssll.collect.pc;

import java.util.Arrays;import java.util.List;

public class PNCDemo {

  public static void main(String[] args) {

    System.out.println("===== demo permutation :");    //for(List<Integer> list : Permutation.of(Arrays.asList(0,1,2,3,4,5,6,7,8,9)))      //System.out.println(list);    for(List<Integer> list : Permutation.of(Arrays.asList(0,1,2,3,4))){       for(List<Integer> list2 : Permutation.of(Arrays.asList(5,6,7,8,9))){            isArithmeticProgression(list, list2);        }        }  }

  public static int  sum(int i, List<Integer> list1, List<Integer> list2){     return i<4? list1.get(i)+list1.get(i+1)+list2.get(i) :list1.get(i)+list1.get(0)+list2.get(i);  }

  public static boolean isArithmeticProgression(List<Integer> list1, List<Integer> list2){   int presum =0;   int predef = 0;      int thissum =0;      presum= sum(0, list1,list2);     thissum= sum(1, list1,list2);    predef = thissum-presum;     for(int i=2; i<5; i++){         presum = thissum;        thissum= sum(i, list1,list2);        if(predef!=thissum-presum) return false;     }     System.out.println("def="+predef+" list1="+list1+" list2="+list2);      return true;  }}

输出结果为:
[list]

def=1 list1=[0, 1, 2, 3, 4] list2=[8, 7, 6, 5, 9]
def=0 list1=[0, 2, 4, 1, 3] list2=[9, 5, 6, 7, 8]
def=0 list1=[0, 3, 1, 4, 2] list2=[8, 7, 6, 5, 9]
def=1 list1=[0, 3, 2, 1, 4] list2=[6, 5, 8, 7, 9]
def=-1 list1=[0, 4, 1, 2, 3] list2=[9, 7, 8, 5, 6]
def=-1 list1=[0, 4, 3, 2, 1] list2=[9, 5, 6, 7, 8]
def=1 list1=[1, 0, 4, 2, 3] list2=[8, 6, 5, 7, 9]
def=1 list1=[1, 2, 0, 4, 3] list2=[6, 8, 7, 5, 9]
def=1 list1=[1, 3, 0, 2, 4] list2=[5, 7, 9, 6, 8]
def=0 list1=[1, 3, 0, 2, 4] list2=[7, 8, 9, 5, 6]
def=-1 list1=[1, 3, 2, 4, 0] list2=[9, 7, 5, 6, 8]
def=-1 list1=[1, 3, 4, 0, 2] list2=[9, 5, 7, 8, 6]
def=0 list1=[1, 4, 2, 0, 3] list2=[6, 5, 9, 8, 7]
def=-1 list1=[1, 4, 2, 0, 3] list2=[8, 6, 9, 7, 5]
def=2 list1=[2, 0, 1, 3, 4] list2=[5, 8, 7, 6, 9]
def=1 list1=[2, 0, 1, 4, 3] list2=[7, 9, 6, 5, 8]
def=2 list1=[2, 0, 3, 1, 4] list2=[5, 6, 7, 8, 9]
def=0 list1=[2, 0, 3, 1, 4] list2=[9, 8, 7, 6, 5]
def=1 list1=[2, 1, 0, 3, 4] list2=[6, 9, 8, 5, 7]
def=1 list1=[2, 1, 0, 4, 3] list2=[6, 9, 7, 5, 8]
def=1 list1=[2, 1, 4, 0, 3] list2=[6, 5, 7, 9, 8]
def=-1 list1=[2, 3, 0, 4, 1] list2=[8, 9, 7, 5, 6]
def=-1 list1=[2, 3, 4, 0, 1] list2=[8, 5, 7, 9, 6]
def=-1 list1=[2, 3, 4, 1, 0] list2=[8, 5, 6, 9, 7]
def=0 list1=[2, 4, 1, 3, 0] list2=[5, 6, 7, 8, 9]
def=-2 list1=[2, 4, 1, 3, 0] list2=[9, 8, 7, 6, 5]
def=-1 list1=[2, 4, 3, 0, 1] list2=[7, 5, 8, 9, 6]
def=-2 list1=[2, 4, 3, 1, 0] list2=[9, 6, 7, 8, 5]
def=1 list1=[3, 0, 2, 4, 1] list2=[6, 8, 5, 7, 9]
def=0 list1=[3, 0, 2, 4, 1] list2=[8, 9, 5, 6, 7]
def=1 list1=[3, 1, 0, 4, 2] list2=[5, 9, 7, 6, 8]
def=1 list1=[3, 1, 2, 0, 4] list2=[5, 7, 9, 8, 6]
def=0 list1=[3, 1, 4, 2, 0] list2=[7, 6, 5, 9, 8]
def=-1 list1=[3, 1, 4, 2, 0] list2=[9, 7, 5, 8, 6]
def=-1 list1=[3, 2, 4, 0, 1] list2=[8, 6, 7, 9, 5]
def=-1 list1=[3, 4, 0, 2, 1] list2=[6, 8, 9, 7, 5]
def=1 list1=[4, 0, 1, 2, 3] list2=[5, 9, 8, 7, 6]
def=1 list1=[4, 0, 3, 2, 1] list2=[5, 7, 6, 9, 8]
def=-1 list1=[4, 1, 2, 3, 0] list2=[8, 9, 6, 7, 5]
def=0 list1=[4, 1, 3, 0, 2] list2=[6, 7, 8, 9, 5]
def=0 list1=[4, 2, 0, 3, 1] list2=[5, 9, 8, 7, 6]
def=-1 list1=[4, 3, 2, 1, 0] list2=[6, 7, 8, 9, 5]

[/list]

这里面用了来自于 http://blog.csdn.net/raistlic/article/details/7844812
的排列组合类,使得计算大大简化,输出结果中list1为五个顶点上的数,list2为五条边上的数,从结果上可以看出有五个差,0,+1,-1, +2,-2,很多解都仅提到了1和2,这也是这道题的争议之处。

小学奥数题Java编程(2)相关推荐

  1. 一道小学奥数题的编程解法

    一道小学奥数题的编程解法 这是一道小学奥数题,看到这一题后如果只给我笔和纸,我真的无从下手,不知怎么去把这些方框填出来.但借助编程,这道题就非常简单了.直接送上代码. C++程序代码 #include ...

  2. python解奥数题_黄哥Python:Python代码解决一道小学奥数题

    有如下小学奥数题: 有180盏亮着的电灯,各有一个拉线开关控制着,现按其顺序编号 1,2,3, ..., 180, 然后将编号为4的倍数的电灯线拉一下,再将 编号为5的倍数的灯线拉一下,最后将编号为6 ...

  3. c语言 奥数题目及答案,科学网—C语言做一道小学奥数题 - 康建的博文

    见过一道小学奥数题,记得题目是:从5月1日到7月1日数字0-9无重复的时间有多少个?(如0512142804是05月12日14:28:04,其中0.1.4有重复, 0526174839无重复). 大概 ...

  4. c语言 奥数题目及答案,科学网-C语言做一道小学奥数题-康建的博文

    见过一道小学奥数题,记得题目是:从5月1日到7月1日数字0-9无重复的时间有多少个?(如0512142804是05月12日14:28:04,其中0.1.4有重复, 0526174839无重复). 大概 ...

  5. 实验3_B_小学奥数题

    #实验3_B_小学奥数题 上小学四年级的小王同学虽然很笨,但他非常喜欢钻研奥数题.他遇到了这样的一个计算分数的问题:S(n)=1/3+3/5+5/7+-+n/(n+2),n为小于40的奇数.题目要求根 ...

  6. 一道小学奥数题,没做出来。求解答

    一道小学奥数题,没做出来.求解答. 将图形平均分成大小相等,形状相同的四份. 下面是某位高人给出的答案.四种不同颜色分别代表4个不同的部分.怎么说呢,这确实是个答案... 虽然和我们通常认为的答案有些 ...

  7. 小学奥数题--饮料问题

    偶然看到一个小学奥数题: 5个空瓶可以换1瓶汽水,某年级共有学生500名,要每个人都能喝一瓶汽水,他们至少要买多少瓶汽水? 方法1: 看到这个题目,首先想到的是列方程: x + x/5 + x/25 ...

  8. matlab解决奥数题,考倒99%大学生的,小学奥数题!附:解题思路+答案

    原标题:考倒99%大学生的,小学奥数题!附:解题思路+答案 昨天一位家长问我,最近精英班除了教记忆方法.记英语单词,很久都没教奥数了.这才想起,近段时间着重点培训学生的高效记忆法,奥数过段时间再授课. ...

  9. Python计算小学奥数题正整数分解为几个整数的倍数和。

    一道小学奥数题如下: 妈妈身上有473元,可以买如下物品,<西游记>70元一套,<三国演义>61元一套,<红楼梦>35元一套,<水浒传>28元一套,&l ...

最新文章

  1. 20165303实验一 Java开发环境的熟悉
  2. boost::filesystem目录相关的测试程序
  3. 注意职场“十不要”,让你少奋斗30年
  4. (84)FPGA显示激励(display)
  5. h.264 视频解码的一点小经验
  6. shell备份mysql思路_写一个shell脚本备份mysql数据库的步骤
  7. ★LeetCode(202)——快乐数(JavaScript)
  8. Windows8测试版使用感受
  9. PSP金手指CMF_r21d修改版安装方法
  10. Java后台调用第三方支付接口(易宝支付)
  11. newifi3 高恪魔改_新路由3高恪newifi3固件-支持512M
  12. 下载链接大全,持续更新...
  13. “汇新杯”互联网产业模式专项赛介绍
  14. http://和www.前缀网站有什么区别
  15. m基于迫零ZF准则的通信均衡器的matlab仿真
  16. 和苗波玩吉他英雄,还有诺拉斯战士
  17. 爬虫 一些爬取图片时出现的错误
  18. 三星s8怎么分屏操作_双屏互动,大有可为 三星Galaxy Z Fold2 5G的魅力折叠体验
  19. 灯具如何利用网络打造品牌品牌实现销售增长?
  20. 肖仰华谈知识图谱:知识将比数据更重要,得知识者得天下

热门文章

  1. cisco路由器针对ip限速
  2. java jlabel对齐方式_怎么设置JLabel内容对齐方式
  3. android通讯联系QuickContactBadge 圆形头像显示详解
  4. 1983年的图灵奖获得者-Ken Thompson (与Dennis M. Ritchie共同获得)
  5. docker镜像加速国内镜像站大全
  6. 关于银行报表开发简单思路解析(MYSQL存储过程)
  7. 计算机 常用命令(超详细)
  8. java 路径转换_java 绝对路径 转换成相对路径
  9. 读取二进制文件(后缀.bin),解析二进制文件,并入库
  10. Spring如何管理Bean生命周期