给定繁殖率的C++中,a、b和c在n秒后的数量


给定三个数字'a'、'b'和'c'作为输入。目标是在n秒后找到'a'、'b'和'c'的数量/值,其繁殖率为:

  • 每隔2秒,每个a都会变成b
  • 每隔5秒,每个b都会变成c
  • 每隔12秒,每个c都会变成2个a。

让我们用例子来理解。

例如

输入 - n_seconds = 62  a = 1 b = 1 c = 1

输出 - 给定繁殖率下,n秒后a的数量为:0

给定繁殖率下,n秒后b的数量为:33

给定繁殖率下,n秒后c的数量为:1

解释 - 60秒后,a将为32,b = 0,c = 0。

再过2秒,所有b都将变成c,c=1。所有a变成b,b=33。

输入 - n_seconds = 20  a = 1 b = 1 c = 1

输出 - 给定繁殖率下,n秒后a的数量为:0

给定繁殖率下,n秒后b的数量为:0

给定繁殖率下,n秒后c的数量为:6

解释

1秒:-  a=1,b=1,c=1

2秒:-  a=0,b=2(1+1) ,c=1          → 2秒后a变为b

4秒:-  a=0,b=2 ,c=1                  → 2秒后a变为b

5秒:-  a=0,b=0 ,c=3 (1+2)        → 5秒后b变为c

6秒:-  a=0,b=0 ,c=3                  → 2秒后a变为b

8秒:-  a=0,b=0 ,c=3                  → 2秒后a变为b

10秒:-  a=0,b=0 ,c=3               → 5秒后b变为c

12秒:-  a=6 (0+2*3),b=0 ,c=0     → 12秒后c变为2a

14秒:-  a=0,b=6(0+6) ,c=0          → 2秒后a变为b

15秒:-  a=0,b=0 ,c=6(0+6)         → 5秒后b变为c

16秒:-  a=0,b=0 ,c=6                  → 2秒后a变为b

18秒:-  a=0,b=0 ,c=6                  → 2秒后a变为b

20秒:-  a=0,b=0 ,c=6                 → 5秒后b变为c

下面程序中使用的方案如下

秒数的最小公倍数为60(2、5、12)。因此,每隔60秒,a、b和c的变化将是

60秒→ a= 32,b=0,c=0

120秒→ a= 32*32 ,b=0,c=0

180秒→ a= 32*32*32 ,b=0,c=0。

对于以60为倍数的秒数,按上述方法计算a的值。对于非倍数,计算最接近的倍数temp,然后从temp+1遍历到输入秒数,并使用模2、5或12进行计算。

  • 将数字a、b和c作为输入。
  • 将n_seconds作为以秒为单位的时间。
  • 函数reproduction_rate(int n_seconds, int a, int b, int c)获取所有参数,并打印给定繁殖率下n秒后a、b和c的数量。
  • 将temp = n_seconds / 60作为n_seonds以下的60的倍数。
  • 根据公式计算a = (int)pow(32, temp)。( atemp )
  • 现在将temp更新为60 * temp,以获得小于或等于n_seconds的最接近的60的倍数。
  • 现在使用for循环从i=temp+1遍历到i=n_seconds。
  • 如果数字i是2的倍数,则通过添加a并使a为0来更新b。
  • 如果数字i是5的倍数,则通过添加b并使b为0来更新c。
  • 如果数字i是12的倍数,则通过添加2c并使c为0来更新a。
  • 在for循环结束时,打印a、b和c的最终值。

示例

在线演示

#include <bits/stdc++.h>
using namespace std;

void reproduction_rate(int n_seconds, int a, int b, int c) {
   int temp = n_seconds / 60;
   a = (int) pow(32, temp);
   temp = 60 * temp;

   for (int i = temp + 1; i <= n_seconds; i++) {
      if (i % 2 == 0) {
         b = b + a;
         a = 0;
      }
      if (i % 5 == 0) {
         c = c + b;
         b = 0;
      }
      if (i % 12 == 0) {
         a = a + (2 * c);
         c = 0;
      }
   }
   cout << "Count of a after n seconds for given reproduction rate is: " << a << "\n";
   cout << "Count of b after n seconds for given reproduction rate is: " << b << "\n";
   cout << "Count of c after n seconds for given reproduction rate is: " << c;
}
int main() {
   int n_seconds = 72;
   int a = 2;
   int b = 1;
   int c = 1;
   reproduction_rate(n_seconds, a, b, c);
   return 0;
}

如果我们运行以上代码,它将生成以下输出:

输出

Count of a after n seconds for given reproduction rate is: 68
Count of b after n seconds for given reproduction rate is: 0

Count of c after n seconds for given reproduction rate is: 0

更新于: 2021年1月29日

78 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告