浏览 3900 次
锁定老帖子 主题:杰哥私房题──细菌繁殖
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-02
问题描述 #include <stdio.h> int main(){ int nCases; int monthDay[] = {31,30,31,30,31,30,31,31,30,31,30, 31}; scanf("%d", &nCases); while(nCases--){ int aMonth, aDay, bMonth, bDay, bacteria; scanf("%d %d %d %d %d", &aMonth, &aDay, &bMonth, &bDay, &bacteria); int days = 0; int j; for(j = aMonth; j < bMonth; j++){ days += monthDay[j - 1]; } days -= aDay; days += bDay; unsigned int total = bacteria; for(j = 0; j < days; j++){ total *= 2; } printf("%d\n", total); } return 0; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-03-04
发错地方了吧 这是java板块啊
|
|
返回顶楼 | |
发表时间:2009-03-04
xiaoyuerbaby 写道 发错地方了吧 这是java板块啊 语言的东西是不分java和c的,他在于的是你的逻辑性~~ |
|
返回顶楼 | |
发表时间:2009-03-04
如果是ACM题目,
一、LZ的算法肯定超时 二、LZ的算法肯定会出现ErrorAnswer 考虑极端情况,起始日期是1.1,终止日期是12.31,没有闰年,天数就是364天 2的364次方肯定不能用int来保存 我的算法: 日期相差天数n 开始有细菌数s 那么到了那天一共有细菌数目是s*(2<<n) 数据巨大,需要使用BigDecimal来保存和输出 |
|
返回顶楼 | |
发表时间:2009-03-04
leeldy 写道 如果是ACM题目,一、LZ的算法肯定超时二、LZ的算法肯定会出现ErrorAnswer考虑极端情况,起始日期是1.1,终止日期是12.31,没有闰年,天数就是364天2的364次方肯定不能用int来保存我的算法:日期相差天数n开始有细菌数s那么到了那天一共有细菌数目是s*(2<<n)数据巨大,需要使用BigDecimal来保存和输出 谢谢你的分析。 对于你所说的问题,首先,你说认为会超时的原因是细菌繁殖的计算吧?我认为即使计算365次也不会超时,这里我用无符号int的范围确实小了点,我不清楚有没有unsigned long,如果有的话到可以用,但是BigDecimal是java的东西,C里面好像没有吧。 |
|
返回顶楼 | |
发表时间:2009-03-04
晕,如果ACM这么简单循环算,那还搞个P
|
|
返回顶楼 | |
发表时间:2009-03-04
最后修改:2009-03-04
这个不用看都知道。。没有两把刷子你能存下天文数字?投一个隐藏
|
|
返回顶楼 | |
发表时间:2009-03-05
ray_linn 写道 这个不用看都知道。。没有两把刷子你能存下天文数字?投一个隐藏 以后我会有个章节处理大数问题的,到时候讨论啦。呵呵 |
|
返回顶楼 | |
发表时间:2009-03-06
netalpha 写道 leeldy 写道 如果是ACM题目,一、LZ的算法肯定超时二、LZ的算法肯定会出现ErrorAnswer考虑极端情况,起始日期是1.1,终止日期是12.31,没有闰年,天数就是364天2的364次方肯定不能用int来保存我的算法:日期相差天数n开始有细菌数s那么到了那天一共有细菌数目是s*(2<<n)数据巨大,需要使用BigDecimal来保存和输出 谢谢你的分析。 对于你所说的问题,首先,你说认为会超时的原因是细菌繁殖的计算吧?我认为即使计算365次也不会超时,这里我用无符号int的范围确实小了点,我不清楚有没有unsigned long,如果有的话到可以用,但是BigDecimal是java的东西,C里面好像没有吧。 用C的话就考虑用数组吧,这样需要不少时间 Long也只有64位二进制,要保存364位的二进制数,你还是采用数组吧 正规的ACM题目的测试数据肯定不会只有1组。。。 一般测试数据都是用txt文件保存,测试的时候读取 我见过的txt测试数据一般都有几M,至于有多少组我就不知道了 |
|
返回顶楼 | |
发表时间:2009-03-06
leeldy 写道 netalpha 写道 leeldy 写道 如果是ACM题目,一、LZ的算法肯定超时二、LZ的算法肯定会出现ErrorAnswer考虑极端情况,起始日期是1.1,终止日期是12.31,没有闰年,天数就是364天2的364次方肯定不能用int来保存我的算法:日期相差天数n开始有细菌数s那么到了那天一共有细菌数目是s*(2<<n)数据巨大,需要使用BigDecimal来保存和输出 谢谢你的分析。 对于你所说的问题,首先,你说认为会超时的原因是细菌繁殖的计算吧?我认为即使计算365次也不会超时,这里我用无符号int的范围确实小了点,我不清楚有没有unsigned long,如果有的话到可以用,但是BigDecimal是java的东西,C里面好像没有吧。 用C的话就考虑用数组吧,这样需要不少时间 Long也只有64位二进制,要保存364位的二进制数,你还是采用数组吧 正规的ACM题目的测试数据肯定不会只有1组。。。 一般测试数据都是用txt文件保存,测试的时候读取 我见过的txt测试数据一般都有几M,至于有多少组我就不知道了 呵呵 恩 在过3天我就会就大数问题出几个题目讨论讨论。 |
|
返回顶楼 | |