免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3178 | 回复: 4
打印 上一主题 下一主题

[算法] 高精度加法计算兔子 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-04 00:53 |只看该作者 |倒序浏览
算法考试要上机考,就练练高精度加法,题目地址:http://www.soj.me/1029
就是不知道为什么不AC~以后估计要经常问问题了,大家帮忙看看,我的代码:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include<string.h>

  4. void add(char *a, char *b, char *ans)
  5. {
  6.     int l = 0, i, j, k, carry, x, y, z;
  7.     if(strlen(a)>=strlen(b))
  8.         l = strlen(a)+2;
  9.     else
  10.         l = strlen(b)+2;
  11.     char *c = malloc(l*sizeof(char));
  12.     i = strlen(a)-1;
  13.     j = strlen(b)-1;
  14.     k = 0;
  15.     carry=0;
  16.     for(; i>=0||j>=0; i--, j--)
  17.     {
  18.         if(i<0)
  19.             x='0';
  20.         else
  21.             x = a[i];
  22.         if(j<0)
  23.             y='0';
  24.         else
  25.             y=b[i];
  26.         z = x-'0'+y-'0';
  27.         if(carry)
  28.             z += 1;
  29.         if(z>9)
  30.         {
  31.             carry = 1;
  32.             z %= 10;
  33.         }
  34.         else
  35.             carry = 0;
  36.         c[k++] = z+'0';
  37.     }
  38.     if(carry)
  39.         c[k++] = '1';
  40.     c[k]='\0';
  41.     for(k=k-1, i=0; k>=0; k--)
  42.         ans[i++] = c[k];
  43.     ans[i] = '\0';
  44. }

  45. int main()
  46. {
  47.     int m, d;
  48.     while(scanf("%d %d", &m, &d)==2 && (m||d))
  49.     {
  50.         char f[102][100] = {"1", "1"};
  51.         int i;
  52.         for(i=1; i<=m; i++)
  53.             add(f[i-1], "1", f[i]);
  54.         for(; i<=d; i++)//f(n) = f(n-1)+f(n-m)
  55.             add(f[i-1], f[i-m], f[i]);
  56.         puts(f[d]);
  57.     }
  58.     return 0;
  59. }
复制代码

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
2 [报告]
发表于 2011-01-04 10:39 |只看该作者
别用C了,用java吧。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
3 [报告]
发表于 2011-01-04 10:41 |只看该作者
本帖最后由 fender0107401 于 2011-01-04 10:43 编辑

关键的问题是如何存储超级大的数吧,

这个问题源于新西兰的兔子,我模拟过,非常非常的吓人,不要小看兔子。

论坛徽章:
0
4 [报告]
发表于 2011-01-04 10:50 |只看该作者
回复 2# ecjtubaowp
哈哈,OJ只给用C、CPP和Pascal

论坛徽章:
0
5 [报告]
发表于 2011-01-04 10:50 |只看该作者
回复 3# fender0107401
是的,但是还是找不到错哪了~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP