社区
数据结构与算法
帖子详情
好像蛮老的一个问题求解
yeyinyue
2005-06-01 11:29:46
九个数字1.2.3.4.5.6.7.8.9
组成3个分式,分母为两位数,分子个位数,三个分式之和等于一
格式为:a/bc+d/ef+g/hi=1 (a-i分别代表1-9中的一个数字,不能重复)
...全文
228
20
打赏
收藏
好像蛮老的一个问题求解
九个数字1.2.3.4.5.6.7.8.9 组成3个分式,分母为两位数,分子个位数,三个分式之和等于一 格式为:a/bc+d/ef+g/hi=1 (a-i分别代表1-9中的一个数字,不能重复)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
NowCan
2005-06-06
打赏
举报
回复
我来了,最土的办法。
/*
有9个数a,b,c,d,e,f,g,h,i,分别是1~9中的一个,不重复。
现有a/bc+d/ef+g/hi=1,求a~i
*/
int main()
{
long a,b,c,d,e,f,g,h,i;
long x,y,z;
for(a=1;a<=9;a++)
{
for(b=1;b<=9;b++)
{
if(b==a)continue;
for(c=1;c<=9;c++)
{
if(c==a||c==b)continue;
for(d=1;d<=9;d++)
{
if(d==a||d==b||d==c)continue;
for(e=1;e<=9;e++)
{
if(e==a||e==b||e==c||e==d)continue;
for(f=1;f<=9;f++)
{
if(f==a||f==b||f==c||f==d||f==e)continue;
for(g=1;g<=9;g++)
{
if(g==a||g==b||g==c||g==d||g==e||g==f)continue;
for(h=1;h<=9;h++)
{
if(h==a||h==b||h==c||h==d||h==e||h==f||h==g)continue;
for(i=1;i<=9;i++)
{
if(i==a||i==b||i==c||i==d||i==e||i==f||i==g||i==h)continue;
x=10*b+c;
y=10*e+f;
z=10*h+i;
if(x*y*z==a*y*z+d*x*z+g*x*y)
{
printf("%d/%d%d+%d/%d%d+%d/%d%d=1\n",a,b,c,d,e,f,g,h,i);
}
}
}
}
}
}
}
}
}
}
return 0;
}
yeyinyue
2005-06-06
打赏
举报
回复
超版强,我朋友也给了一个程序,不过他说也是看书上来的。
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
#include "stdio.h"
#include "iostream.h"
void func(int n,int * a);
void main(void)
{
int arr[]={1,2,3,4,5,6,7,8,9};
func(9,arr);
getchar();
}
void func(int n,int * a) {
static int Num =0;
int *i=new int[n];
int c=0,j;
i[c]=-1;
while(i[0]<n){
if(++i[c]<n) {
for(j=0; j<c ;j++)
if( i[j] == i[c])
break;
if(j==c){
if(c+1<n){
++c;
i[c]=-1;
}
else{
cout.width(2);
//cout<<Num++<< " ";
double x,y,z;
x = (double)a[i[0]]/((double)(a[i[1]]*10)+(double)a[i[2]]);
y = (double)a[i[3]]/((double)(a[i[4]]*10)+(double)a[i[5]]);
z = (double)a[i[6]]/((double)(a[i[7]]*10)+(double)a[i[8]]);
double sum = ((double)(x + y + z) -(double)1);
if(sum < 0.0000001 && sum > -0.0000001){
for(int j=0;j<n;j++)
cout<<a[i[j]]<<",";
cout<<endl;
}
}
}
}
else
c--; }
}
mmmcd
2005-06-02
打赏
举报
回复
找到了一个解,全排列一下,共六个:
5/34+7/68+9/12=1
5/34+9/12+7/68=1
7/68+5/34+9/12=1
7/68+9/12+5/34=1
9/12+5/34+7/68=1
9/12+7/68+5/34=1
=================================
#include <iostream>
#include <cmath>
using namespace std;
double a[9];
bool used[9];
void go(int k)
{
int i;
double ans;
if(k<9)
{
for(i=1;i<=9;i++)
{
if(used[i])continue;
used[i]=1;
a[k]=i;
go(k+1);
used[i]=0;
}
}else{
ans=0;
for(i=0;i<3;i++){
ans+=a[i*3]/(a[i*3+1]*10+a[i*3+2]);
}
if(fabs(ans-1)<1e-13)
{
for(i=0;i<3;i++){
cout<<a[i*3]<<'/'<<a[i*3+1]<<a[i*3+2];
if(i<2)cout<<'+';
else cout<<"=1\n";
}
}
}
}
int main(){
go(0);
return 0;
}
67140170
2005-06-02
打赏
举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <time.h>
#include <windows.h>
void main()
{
int a,b,c,d,e,f,g,h,i;
SYSTEMTIME st;
GetSystemTime(&st);
printf("%d\t",st.wSecond );
printf("%d",st.wMilliseconds );
printf("\n");
for(a=1;a<=9;a++)
{
for(b=1;b<=9;b++)
{
if(b!=a)
{
for(c=1;c<=9;c++)
{
if((c!=b)&&(c!=a))
{
for(d=1;d<=9;d++)
{
if((d!=a)&&(d!=b)&&(d!=c))
{
for(e=1;e<=9;e++)
{
if((e!=a)&&(e!=b)&&(e!=c)&&(e!=d))
{
for(f=1;f<=9;f++)
{
if((f!=a)&&(f!=b)&&(f!=c)&&(f!=d)&&(f!=e))
{
for(g=1;g<=9;g++)
{
if((g!=a)&&(g!=b)&&(g!=c)&&(g!=d)&&(g!=e)&&(g!=f))
{
for(h=1;h<=9;h++)
{
if((h!=a)&&(h!=b)&&(h!=c)&&(h!=d)&&(h!=e)&&(h!=f)&&(h!=g))
{
for(i=1;i<=9;i++)
{
if((i!=a)&&(i!=b)&&(i!=c)&&(i!=d)&&(i!=e)&&(i!=f)&&(i!=g)&&(i!=h))
{
if((a*(10*e+f)*(10*h+i)+g*(10*b+c)*(10*e+f)+d*(10*b+c)*(10*h+i))==((10*b+c)*(10*e+f)*(10*h+i)))
{
printf("%d,%d,%d,%d,%d,%d,%d,%d,%d",a,b,c,d,e,f,g,h,i);
printf("\n");
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
GetSystemTime(&st);
printf("\n");
printf("%d\t",st.wSecond );
printf("%d\n",st.wMilliseconds );
}
xiaoluoli
2005-06-02
打赏
举报
回复
呵呵,通分后,分子相加之和等于分母。
可以考虑可能方便
寻开心
2005-06-02
打赏
举报
回复
?
5/34+7/68+9/12=1
就是
a/(b*10+c)+d/(e*10+f)+g/(h*10+i)=1
啊
zzwu
2005-06-02
打赏
举报
回复
a/bc+d/ef+g/hi=1 的含义应为
(a/b)*c+(d/e)*f+(g/h)*i=1
而不是
a/(b*10+c)+d/(e*10+f)+g/(h*10+i)=1
也不是
a/(b*c)+d/(e*f)+g/(h*i)=1
xiaoluoli
2005-06-01
打赏
举报
回复
a/bc+d/ef+g/hi=1
凑吧
yeyinyue
2005-06-01
打赏
举报
回复
我也闷了一天了,做9个循环是很郁闷的事。
NowCan
2005-06-01
打赏
举报
回复
不知道有什么简单办法。一个一个的凑好像很麻烦。
NowCan
2005-06-01
打赏
举报
回复
嗯,只有这一个解,直接9个循环还是很快的,1秒都不到。
yeyinyue
2005-06-01
打赏
举报
回复
有解:5/34+7/68+9/12=1
只看程序怎么编了
xiangxyz
2005-06-01
打赏
举报
回复
生成一个二维数组
{1,2,3,4,5,6,7,8,9
1,3,2,4,5,6,7,8,9
。。。。。。。。。}
一共有9的阶层行
然后将每一行带入算式
yeyinyue
2005-06-01
打赏
举报
回复
如果下面是乘法关系,1/3*6+5/8*9+7/2*4=1倒是有解的。
yeyinyue
2005-06-01
打赏
举报
回复
是否精度不够?我弄了一个也是无解。
NowCan
2005-06-01
打赏
举报
回复
x=10b+c
y=10e+f
z=10h+i
检验ayz+dxz+gxy==xyz?
结果无解???
还是我程序有问题?
jihanzhong
2005-06-01
打赏
举报
回复
全排列 9!种情况
yeyinyue
2005-06-01
打赏
举报
回复
对,是a/(b*10+c) + d/(e*10+f) + g/(h*10+i) = 1,谢谢happy__888([顾问团]寻开心)指出。
寻开心
2005-06-01
打赏
举报
回复
是 a/(b*10+c) + d/(e*10+f) + g/(h*10+i) = 1 吧
是可以硬凑,再想想看哪里可以优化吧
Zephyrzzz
2005-06-01
打赏
举报
回复
变成aefhi+dbchi+gbcef=bcefhi
然后用生成排列的方法代进去检验吧,其实最多也才9!而已.
代码 | 用ALNS框架
求解
一个
TSP
问题
- 代码详解
今天就来实战一下,教大家怎么用ALNS的代码框架,
求解
一个
老
生常谈的TSP
问题
,so,get ready? 01 文件说明 整个项目由多个文件组成,为了大家更好了解各个文件的内容以及他们之间的关系,小编特地做了一份表格说明...
凸优化之有等式约束的优化
问题
的
求解
方法
有等式约束的优化
问题
的
求解
方法 对数障碍 log barrier\text{log barrier}log barrier 首先, 介绍一下 log barrier\text{log barrier}log barrier 方法: minf0(x)s.t.fi(x)≤0i=1⋯mAx=b⇔min...
Dynamic Programming
求解
GoldMineProblem
而方法2是通过DP思想从后往前推,假设前n-1步得到的就是n-1步上的最优解,则再加上第n步的最值则就是全局的最优解,所有DP思想可以精确
求解
全局最优解,这个
好像
不对,下面才是DP得到全局最优解的根本原因和效率高效...
Riemann
问题
精确解及程序实现
一维无粘流动初始间断的演化
问题
,激波管
问题
(Sod激波管
问题
),由于该
问题
属于典型的间断
问题
,且有精确解存在,故广泛用于对比验证CFD中离散格式、数值方法的准确性,意义嘛还是
蛮
重要的。 1
问题
描述 2
求解
...
matlab指派
问题
线性规划
2018/9/11更正 用intlinprog可以
求解
整数规划。...下面证明的截图打字进去搜能找到原文,但是是lingo的
一个
非正式教材,并没有说明“什么是特例”以及给出证明。我大概找了一下没有找到相关资料。 ...
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章