小学奥数题Java编程(2)
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)相关推荐
- 一道小学奥数题的编程解法
一道小学奥数题的编程解法 这是一道小学奥数题,看到这一题后如果只给我笔和纸,我真的无从下手,不知怎么去把这些方框填出来.但借助编程,这道题就非常简单了.直接送上代码. C++程序代码 #include ...
- python解奥数题_黄哥Python:Python代码解决一道小学奥数题
有如下小学奥数题: 有180盏亮着的电灯,各有一个拉线开关控制着,现按其顺序编号 1,2,3, ..., 180, 然后将编号为4的倍数的电灯线拉一下,再将 编号为5的倍数的灯线拉一下,最后将编号为6 ...
- c语言 奥数题目及答案,科学网—C语言做一道小学奥数题 - 康建的博文
见过一道小学奥数题,记得题目是:从5月1日到7月1日数字0-9无重复的时间有多少个?(如0512142804是05月12日14:28:04,其中0.1.4有重复, 0526174839无重复). 大概 ...
- c语言 奥数题目及答案,科学网-C语言做一道小学奥数题-康建的博文
见过一道小学奥数题,记得题目是:从5月1日到7月1日数字0-9无重复的时间有多少个?(如0512142804是05月12日14:28:04,其中0.1.4有重复, 0526174839无重复). 大概 ...
- 实验3_B_小学奥数题
#实验3_B_小学奥数题 上小学四年级的小王同学虽然很笨,但他非常喜欢钻研奥数题.他遇到了这样的一个计算分数的问题:S(n)=1/3+3/5+5/7+-+n/(n+2),n为小于40的奇数.题目要求根 ...
- 一道小学奥数题,没做出来。求解答
一道小学奥数题,没做出来.求解答. 将图形平均分成大小相等,形状相同的四份. 下面是某位高人给出的答案.四种不同颜色分别代表4个不同的部分.怎么说呢,这确实是个答案... 虽然和我们通常认为的答案有些 ...
- 小学奥数题--饮料问题
偶然看到一个小学奥数题: 5个空瓶可以换1瓶汽水,某年级共有学生500名,要每个人都能喝一瓶汽水,他们至少要买多少瓶汽水? 方法1: 看到这个题目,首先想到的是列方程: x + x/5 + x/25 ...
- matlab解决奥数题,考倒99%大学生的,小学奥数题!附:解题思路+答案
原标题:考倒99%大学生的,小学奥数题!附:解题思路+答案 昨天一位家长问我,最近精英班除了教记忆方法.记英语单词,很久都没教奥数了.这才想起,近段时间着重点培训学生的高效记忆法,奥数过段时间再授课. ...
- Python计算小学奥数题正整数分解为几个整数的倍数和。
一道小学奥数题如下: 妈妈身上有473元,可以买如下物品,<西游记>70元一套,<三国演义>61元一套,<红楼梦>35元一套,<水浒传>28元一套,&l ...
最新文章
- 20165303实验一 Java开发环境的熟悉
- boost::filesystem目录相关的测试程序
- 注意职场“十不要”,让你少奋斗30年
- (84)FPGA显示激励(display)
- h.264 视频解码的一点小经验
- shell备份mysql思路_写一个shell脚本备份mysql数据库的步骤
- ★LeetCode(202)——快乐数(JavaScript)
- Windows8测试版使用感受
- PSP金手指CMF_r21d修改版安装方法
- Java后台调用第三方支付接口(易宝支付)
- newifi3 高恪魔改_新路由3高恪newifi3固件-支持512M
- 下载链接大全,持续更新...
- “汇新杯”互联网产业模式专项赛介绍
- http://和www.前缀网站有什么区别
- m基于迫零ZF准则的通信均衡器的matlab仿真
- 和苗波玩吉他英雄,还有诺拉斯战士
- 爬虫 一些爬取图片时出现的错误
- 三星s8怎么分屏操作_双屏互动,大有可为 三星Galaxy Z Fold2 5G的魅力折叠体验
- 灯具如何利用网络打造品牌品牌实现销售增长?
- 肖仰华谈知识图谱:知识将比数据更重要,得知识者得天下
热门文章
- cisco路由器针对ip限速
- java jlabel对齐方式_怎么设置JLabel内容对齐方式
- android通讯联系QuickContactBadge 圆形头像显示详解
- 1983年的图灵奖获得者-Ken Thompson (与Dennis M. Ritchie共同获得)
- docker镜像加速国内镜像站大全
- 关于银行报表开发简单思路解析(MYSQL存储过程)
- 计算机 常用命令(超详细)
- java 路径转换_java 绝对路径 转换成相对路径
- 读取二进制文件(后缀.bin),解析二进制文件,并入库
- Spring如何管理Bean生命周期