| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2542 人关注过本帖, 1 人收藏
标题:最优埃及分数,怎么搞
只看楼主 加入收藏
机器能
Rank: 2
等 级:论坛游民
帖 子:46
专家分:61
注 册:2009-8-24
收藏
得分:0 
优化一下2楼代码
程序代码:
#include"stdio.h"
void tran(int a,int b)
{
int c;
if(b%a==0) printf("1/%d\n",b/a);
  c=b/a+1;
  printf("1/%d+",c);
  a=a*c-b;
  b=b*c;
  tran(a,b);
}
void main()
{
  int a,b;
  while(1)
  {
   printf("请输入分子与分母:");
   scanf("%d%d",&a,&b);
   tran(a,b);
  }
} 

不管黑猫白猫抓住老鼠就是好猫~
2009-09-01 13:00
机器能
Rank: 2
等 级:论坛游民
帖 子:46
专家分:61
注 册:2009-8-24
收藏
得分:0 
我做出来了,大家来测试一下看看有没有bug?
程序代码:
#include"stdio.h"
int m[10],n=0,k,N=99,M[10][10],A=0;
int tran(int a,int b,int ceng)
{
int c,x,y,add=1;
 if(b%a==0) 
 {
    m[n]=b/a;
    if(n>0&&m[n]<=m[n-1])return 0;
    for(k=0;k<=n;k++)M[A][k]=m[k];
    A++;
    if(N==99)N=n;
    putchar('\n');
    return 0;
 }
 if(ceng==N)return 0;
for(;add<1000;add++)
{

  x=a;
  y=b;
  c=b/a+add;
  m[n]=c;
  if(n>0&&m[n]<=m[n-1])continue;
  a=a*c-b;
  b=b*c;
  ++n;
  ceng++;
  tran(a,b,ceng);
  a=x;
  b=y;
  --n;
  --ceng;
}
}
void main()
{
  int a,b,i,F=99999,G,x,y;
   printf("请输入分子与分母:");
   scanf("%d%d",&a,&b);
   x=a;
   y=b;
   tran(a,b,0);
   for(i=0;i<A;i++)
       if(M[i][N]<F){F=M[i][N];G=i;}
   putchar('\n');
   printf("\n\nSample Input\n%d   %d\nSample Output\n",x,y);
   for(i=0;i<=N;i++)
       printf("%d  ",M[G][i]);

} 

不管黑猫白猫抓住老鼠就是好猫~
2009-09-02 11:17
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
收藏
得分:2 
回复 12楼 机器能
垃圾代码。

生命不熄,战斗不止.
2009-09-02 11:48
机器能
Rank: 2
等 级:论坛游民
帖 子:46
专家分:61
注 册:2009-8-24
收藏
得分:0 
回复 13楼 wxjeacen
至少你比强,你还写不出来呢~你测试一下看我结果又没有错~我测试了几百次都正确

不管黑猫白猫抓住老鼠就是好猫~
2009-09-02 12:12
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
收藏
得分:0 
回复 14楼 机器能
不知者 无畏

生命不熄,战斗不止.
2009-09-02 12:25
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
收藏
得分:2 
以下是引用机器能在2009-9-2 12:12的发言:
至少你比强,你还写不出来呢~你测试一下看我结果又没有错~我测试了几百次都正确
输入14 45看看..
还有..
97 99
9 11
11 999
看看都是什么结果....
......
2009-09-02 13:33
dhtug
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2009-7-22
收藏
得分:2 
难道是想说,不知者 无罪...
2009-09-02 14:01
机器能
Rank: 2
等 级:论坛游民
帖 子:46
专家分:61
注 册:2009-8-24
收藏
得分:0 
回复 16楼 godbless
9 11结果是2 4 22 44
关于一些无法算出的错误我想应该是越界问题,分母太大了超出了int范围

不管黑猫白猫抓住老鼠就是好猫~
2009-09-03 10:19
zhaoguoge
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:46
专家分:121
注 册:2009-7-8
收藏
得分:0 
#include <stdio.h>
int fun(int b);
void tran(int x, int y, int k);
void main()
{
    int a, b, n, k, i;
   
    printf("Input how many groups data\n");
    printf("And Input the  data  a  b (0<a<b<1000)\n");
    scanf("%d", &n);
    for(i = 0; i < n; i++)
    {
        scanf("%d%d", &a, &b);
        k = fun(b);
        tran(a,b,k);
        printf("\n");
    }
}
int fun(int b)
{
    int i, r;
    for(i = 1; i <= b; i++)
    {
        if((b%i == 0) && ((b/i - i) > 0))
        {
            r = i;
        }
    }
    return r;
}
void tran(int x, int y, int k)
{
    int a, b;
    double temp;
   
    a = x * k - y;
    b = y * k;
    temp = (double)a/b;
    if(temp > 0)
    {
        printf("%d  ", k);
        tran(a,b,k+1);
    }
    else if(temp < 0)
    {
        tran(x,y,k+1);
    }
    else if(temp == 0)
    {
        printf("%d", k);
    }
}      



输入方面有点草率  你要是用  就自己改改!
2009-09-04 18:59
hwdwow
Rank: 2
等 级:论坛游民
帖 子:119
专家分:98
注 册:2009-3-21
收藏
得分:0 
程序中出现double的肯定是错的,古埃及人还没有实数的概念呢
2009-09-05 10:59
快速回复:最优埃及分数,怎么搞
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046956 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved