首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改进我的关于细菌群(C++)生长的代码

如何改进我的关于细菌群(C++)生长的代码
EN

Stack Overflow用户
提问于 2013-05-17 12:08:34
回答 2查看 1.2K关注 0票数 0

我正在编写一个程序来计算细菌菌落的生长,直到一定的时间点。

给定一个"X",这将代表最初的细菌数量。给出一个"Y",表示细菌群中细菌的数量限制。返回细菌菌落达到极限所需的天数和小时数。

菌落每小时增加一倍。

实例1:

  • 投入: 1,8
  • 产出: 0,3

实例2:

  • 输入: 1000,1024000
  • 产出:0、10

实例3:

  • 输入: 123,3453546624536
  • 产出: 1,10

如果计算出的小时返回小数,则必须将其舍入。

到目前为止,我已经编写了以下代码:

代码语言:javascript
复制
#include <iostream>

using namespace std;

int main(){

    long int binitial, blimit, day, counter=0;
    float  hour;

    cin >> binitial;
    cin >> blimit;

    while(binitial <= blimit){
        binitial = binitial * 2;
        counter++;
    }

    day = counter / 24;
    cout << day << " ";
    hour = (counter % 24) - 0.5;
    cout << (int)hour;
    return 0;
}
EN

回答 2

Stack Overflow用户

发布于 2013-05-17 12:12:28

如果您执行以下操作,可以使用长int操作一个小时:

代码语言:javascript
复制
hour = counter - (day*24); // The total number of hours minus the number of hours that are in each day.

我面前没有编译器,但您可能也可以这样做:

代码语言:javascript
复制
hour = counter % 24; // this will return the remainder when counter is divided by 24.
票数 0
EN

Stack Overflow用户

发布于 2013-05-17 12:15:15

如果blimit始终是binitial的倍数,则解决方案很简单:

counter%24总是一个整数,所以您不必舍入它。在day日和hour小时的情况下,您只需做以下工作:

代码语言:javascript
复制
hour = counter%24
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16608642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档