1+2+3+4+5+6+7+8+9.....

把1,2,3,4,.5,6,7,8,9填入五环中的九个空白处,使每个圈内数字之和等于13,该怎样填?
答案是出来了,仅靠一个数一个数的验证.
<font COLOR="#CE+4=13
<font COLOR="#CE+4=13
<font COLOR="#CE+5=13
<font COLOR="#CE+5=13
见1、2、有色等式
另有一种思路:在这五个互交的圆圈中,二圆相交中的数都要重复使用二次(都为偶数,有局限性,即第二个答案)。
即每个圈内数字之和等于13,五个圈的和为13&5=65
而1+2+3+4+5+6+7+8+9=45
65-45=20& 即二圆相交中的数之和为20。
(而2+4+6+8正好为20,故才有第二种答案的提法:1+3+5+7+9+(2+4+6+8)&2=65 )
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。var sogou_ad_id=731545;
var sogou_ad_height=90;
var sogou_ad_width=980;大家都在搜:
扫描二维码安装搜房网房天下APP
手机浏览器访问搜房网房天下
> > 问题详情
1+2+3+4+5+6+7+8+9+10........91+92+93+94+95+96+97+98+99+100=?
请问这道题该怎么做?麻烦指点 谢谢!!!
浏览次数:0
回答被采纳后将共获得20
这是1个公式。首项加末项的和成项数除以2。所以:(1+100)x50除以2
首相加末相乘以相数除以2(1+100)*100/2
位提问人正在寻找答案
手机动态登录
请输入用户名/邮箱/手机号码!
请输入密码!
没有搜房通行证,
ask:6,asku:1,askr:680,askz:6,askd:11askR:1,askD:708 mz:nohit,askU:0,askT:0askA:710
Copyright &
北京拓世宏业科技发展有限公司
Beijing Tuo Shi Hong Ye Science&Technology Development Co.,Ltd 版权所有
客服电话: 400-850-8888 违法信息举报邮箱:9622人阅读
数据结构(3)
一共有3^8种可能。
成功:12&#43;34&#43;56&#43;7-8&#43;9 = 110
成功:12&#43;3&#43;45&#43;67-8-9 = 110
成功:12-3&#43;4-5&#43;6&#43;7&#43;89 = 110
成功:1&#43;2&#43;34&#43;5&#43;67-8&#43;9 = 110
成功:1-2&#43;3&#43;45-6&#43;78-9 = 110
成功:123&#43;4-5-6-7-8&#43;9 = 110
成功:123-4&#43;5-6-7&#43;8-9 = 110
成功:123-4-5&#43;6&#43;7-8-9 = 110
成功:123&#43;4&#43;5&#43;67-89 = 110
成功:1&#43;234-56-78&#43;9 = 110
两种方法:
* Copyright (C) 2012 Lear C
* 1 2 3 4 5 6 7 8 9 = 110
* 在数字间填入加号或者减号(可以不填,但不能填入其它符号)使等式成立。 &br/&
* 一种更好的方法是:&br/&
* 每一个空隙之间都有三种可能,&+&, &-&, &&,所以一共有3^8种可能。
* @author Lear
public class Tester2 {
private static final char[] NUMBERS = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
private static final String[] OPERATORS = {&+&, &-&, &&};
private static final int RESULT = 110;
// 计算结果
public static void main(String[] args) {
sortAndCompute(0, &&);
private static void sortAndCompute(int numIndex, String buffer) {
// 说明到最后一个字符了
if(numIndex == NUMBERS.length - 1) {
buffer += NUMBERS[numIndex];
String formula = buffer.toString();
if(sum(formula) == RESULT) {
System.out.println(formula + & = & + RESULT);
for(int operIndex = 0; operIndex & OPERATORS. ++operIndex) {
buffer += NUMBERS[numIndex];
buffer += OPERATORS[operIndex];
sortAndCompute(numIndex + 1, buffer);
// 消除前面两个已经添加的字符恢复原状,以便下一次循环的叠加
// 但是当中间连接符变为''的时候,则只删除buffer中的前面一个字符
buffer = operIndex != 2 ? buffer.substring(0, buffer.length() - 2)
: buffer.substring(0, buffer.length() - 1);
private static int sum(String formula) {
if(formula == null || formula.trim().length() == 0)
throw new IllegalArgumentException(&formula is invalid!&);
Stack&String& numStack = new Stack&String&();
Stack&String& operStack = new Stack&String&();
StringBuffer numBuffer = new StringBuffer();
formula += &#&; // 添加一个结束符到公式末尾便于计算
char[] chs = formula.toCharArray();
for(int index = 0; index & formula.length(); ++index) {
if(chs[index] != '+' && chs[index] != '-' && chs[index] != '#') {
numBuffer.append(chs[index]);
numStack.push(numBuffer.toString());
numBuffer.delete(0, numBuffer.length());
if(operStack.isEmpty()) operStack.push(chs[index] + &&);
int numAft = Integer.parseInt(numStack.pop());
int numBef = Integer.parseInt(numStack.pop());
String oper = operStack.pop();
int sum = oper.equals(&+&) ? numBef + numAft : numBef - numA
numStack.push(sum + &&);
operStack.push(chs[index] + &&);
return Integer.parseInt(numStack.pop());
import java.util.ArrayL
import java.util.C
import java.util.L
* 1 2 3 4 5 6 7 8 9 = 110
* 在数字间填入加号或者减号(可以不填,但不能填入其它符号)使等式成立。
* @author Lear
public class Tester {
private static final char[] NUMBERS = {'1', '2', '3', '4', '5', '6', '7', '8', '9'/**/};
private static final int RESULT = 110; // 计算结果
public static void main(String[] args) {
List&List&String&& all = sort(NUMBERS);
testPrint(all);
for(List&String& aRank : all) {
printEstablishEquation(aRank);
private static void testPrint(List&List&String&& all) {
for(List&String& aRank : all) {
System.out.println(aRank);
* 按nums的顺序进行排列组合,最后返回一个List数组,它将包含所有的可能的一个由一列数据的List数组。
* 此为一个递归函数,第一个的组合数字后面的字符都将继续调用此函数以计算出List&List&String&&.&br/&
* 缺点:数据量增大时,将导致内存溢出,而且算法的效率低下
* @param nums
* @return 格式:[[1,2,3,4..],[12,3,4,..],[12,34,...],....]
private static List&List&String&& sort(char[] nums) {
if(nums.length == 0) return Collections.emptyList();
List&List&String&& all = new ArrayList&List&String&&();
// 字符数组直接加入此List中
List&String& firstRank = new ArrayList&String&();
for(int i = 0; i & nums. ++i) {
firstRank.add(nums[i] + &&);
all.add(firstRank);
// 组合数字的个数,如:1,2,3,4.... ; 12,3,4,5.. ; 123,4,5.. ; 1234.5 ...
for(int combinationNum = 2; combinationNum &= nums. ++combinationNum) {
// 此组合的偏移量,如:12,3.... ; 1,23,4....; 1,2,34,...
for(int offset = 0; offset & nums.length - (combinationNum - 1); ++offset) {
List&String& preRank = new ArrayList&String&();
StringBuilder buffer = new StringBuilder();
for(int i = 0; i & ++i) { // 前
preRank.add(nums[i] + &&);
for(int i = i & offset + combinationN ++i) { // 中
buffer.append(nums[i]);
preRank.add(buffer.toString());
// 获取后面的字符数组,然后递归组合
char[] suffix = new char[nums.length - (offset + combinationNum)];
for(int i = offset + combinationNum, index = 0; i & nums. ++i, ++index) { // 后
suffix[index] = nums[i];
// 例如:12组合的后面 [[3,4,5,6,7...],[34,5,6...],[345...]]
List&List&String&& sufArray = sort(suffix);
// 为里面的所有List&String&添加前面的数字组合,
// 例如:添加12到上面的例子中,使之成为[[12,3,4,...],[12,34...]....]
if(sufArray.size() != 0)
for(List&String& sufRank : sufArray) {
// 组合前后的List
List&String& allRank = new ArrayList&String&();
for(int i = 0; i & preRank.size(); ++i) allRank.add(preRank.get(i));
for(int i = 0; i & sufRank.size(); ++i) allRank.add(sufRank.get(i));
// 添加到all中去
all.add(allRank);
all.add(preRank); // 说明到末尾了
private static void printEstablishEquation(List&String& ls) {
char[] operators = {'+', '-'};
StringBuilder buff = new StringBuilder();
// 转换为数字
int[] nums = new int[ls.size()];
for(int i = 0; i & ls.size(); ++i) {
nums[i] = Integer.parseInt(ls.get(i));
// 对应的操作符是否变化的数组
boolean[] isOperChanges = new boolean[nums.length - 1];
// 计算每一个isOperChange的变化周期
int[] perOperChangeCounts = new int[isOperChanges.length];
for(int index = 0; index & isOperChanges. ++index) {
perOperChangeCounts[index] = (int) Math.pow(2, index);
// 可能性的计算次数 2^(nums.length - 1)
int computeCount = (int) Math.pow(2, nums.length -1);
for(int i = 1; i &= computeC ++i) {
// 迭代计算
int sum = nums[0];
buff.append(nums[0]);
for(int index = 0; index & nums.length - 1; ++index) {
sum = isOperChanges[index] ? sum - nums[index + 1] : sum + nums[index + 1];
buff.append(isOperChanges[index] ? operators[1] : operators[0]);
buff.append(nums[index + 1]);
if(sum == RESULT) // 输出等式成立的表达式
System.out.println(&成功:& + buff.toString() + & = & + sum);
System.out.println(&失败:&
+ buff.toString() + & = & + sum);
buff.delete(0, buff.length());
// 操作符交替变化数组的迭代计算。
// 第1操作符,每次交替变化;第2操作符,i每 2^2次变化一次;第3操作符,i每2^3次变化一次
for(int index = 0; index & isOperChanges. ++index) {
if(i % perOperChangeCounts[index] == 0)
isOperChanges[index] = !isOperChanges[index]; // 交替
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:187946次
积分:2546
积分:2546
排名:第12273名
原创:54篇
转载:62篇
评论:14条
(2)(6)(2)(1)(6)(2)(4)(1)(1)(1)(3)(1)(4)(1)(2)(2)(9)(5)(4)(20)(20)(12)(9)

我要回帖

更多关于 6楼7楼8楼9楼哪层好 的文章

 

随机推荐