123456789任意组合相加等于100

0123456789任意组合,每个数只能用一次,但每个数都要用到,只能用加号,怎样才能使结果等于100呢???三年级的数学题,条件:只能用加号... 0123456789 任意组合,每个数只能用一次,但每个数都要用到,只能用加号,怎样才能使结果等于100呢???
三年级的数学题,条件:只能用加号
展开
黄焖馒头
2009-08-06 · TA获得超过7654个赞
知道大有可为答主
回答量:713
采纳率:0%
帮助的人:749万
展开全部
123+45-67+8-9=100
12-3-4+5-6+7+89=100
12+3+4+5-6-7+89=100
1+23-4+5+6+78-9=100
12+3-4+5+67+8+9=100
1+2+3-4+5+6+78+9=100
123+4-5+67-89=100
123-45-67+89=100

程序如下:

main()
{
char op,str[80];
int i,j,s,n,m,ptr;
for (i=0;i<=6561;i++) /*i是每一种枚举的情况,把i分解为八位3进制数,每一位表示每一个位置的符号*/
{
s=0; /*该方式下的和*/
m=1; /*作操作数*/
n=i; /*获取i在3进制下的每一位会破坏i,所以借用变量n来获取*/
op='+'; /*第一次操作方式为+*/
ptr=0; /*指针用来记录运算过程*/
str[ptr++]='1'; /*首先记录一个1*/
for (j=2;j<=9;j++) /*八次循环,每次的下一个操作数是j*/
{
if (n%3) /*3进制下的第j-1位数,如果不是0,则要完成先前的操作*/
{
if (op=='+') s+=m; else s-=m;m=j;
}
switch(n%3) /*根据这一位的情况进行处理*/
{
case 0:m=m*10+j;break;
case 1:op='+';break;
case 2:op='-';break;
}
if (n%3) str[ptr++]=op; /*记录运算模式*/
str[ptr++]='0'+j;
n/=3;
}
if (op=='+') s+=m; else s-=m;
str[ptr]='\0';
if (s==100) printf("FOUND: %s=%d\n",str,s); /*判断是否满足*/
}
}

程序运行结果为:

FOUND: 123-45-67+89=100
FOUND: 12-3-4+5-6+7+89=100
FOUND: 12+3+4+5-6-7+89=100
FOUND: 123+4-5+67-89=100
FOUND: 1+2+3-4+5+6+78+9=100
FOUND: 12+3-4+5+67+8+9=100
FOUND: 1+23-4+56+7+8+9=100
FOUND: 1+2+34-5+67-8+9=100
FOUND: 1+23-4+5+6+78-9=100
FOUND: 123+45-67+8-9=100
FOUND: 123-4-5-6-7+8-9=100

只用加号做不到的。
Sievers分析仪
2025-02-09 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准... 点击进入详情页
本回答由Sievers分析仪提供
创作者cAg5diF8fj
2020-02-25 · TA获得超过3929个赞
知道大有可为答主
回答量:3103
采纳率:25%
帮助的人:184万
展开全部
123+45-67+8-9=100
12-3-4+5-6+7+89=100
12+3+4+5-6-7+89=100
1+23-4+5+6+78-9=100
12+3-4+5+67+8+9=100
1+2+3-4+5+6+78+9=100
123+4-5+67-89=100
123-45-67+89=100
程序如下:
main()
{
char
op,str[80];
int
i,j,s,n,m,ptr;
for
(i=0;i<=6561;i++)
/*i是每一种枚举的情况,把i分解为八位3进制数,每一位表示每一个位置的符号*/
{
s=0;
/*该方式下的和*/
m=1;
/*作操作数*/
n=i;
/*获取i在3进制下的每一位会破坏i,所以借用变量n来获取*/
op='+';
/*第一次操作方式为+*/
ptr=0;
/*指针用来记录运算过程*/
str[ptr++]='1';
/*首先记录一个1*/
for
(j=2;j<=9;j++)
/*八次循环,每次的下一个操作数是j*/
{
if
(n%3)
/*3进制下的第j-1位数,如果不是0,则要完成先前的操作*/
{
if
(op=='+')
s+=m;
else
s-=m;m=j;
}
switch(n%3)
/*根据这一位的情况进行处理*/
{
case
0:m=m*10+j;break;
case
1:op='+';break;
case
2:op='-';break;
}
if
(n%3)
str[ptr++]=op;
/*记录运算模式*/
str[ptr++]='0'+j;
n/=3;
}
if
(op=='+')
s+=m;
else
s-=m;
str[ptr]='\0';
if
(s==100)
printf("FOUND:
%s=%d\n",str,s);
/*判断是否满足*/
}
}
程序运行结果为:
FOUND:
123-45-67+89=100
FOUND:
12-3-4+5-6+7+89=100
FOUND:
12+3+4+5-6-7+89=100
FOUND:
123+4-5+67-89=100
FOUND:
1+2+3-4+5+6+78+9=100
FOUND:
12+3-4+5+67+8+9=100
FOUND:
1+23-4+56+7+8+9=100
FOUND:
1+2+34-5+67-8+9=100
FOUND:
1+23-4+5+6+78-9=100
FOUND:
123+45-67+8-9=100
FOUND:
123-4-5-6-7+8-9=100
只用加号做不到的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式