对于C ++中给定的再现速率,在n秒后计算a,b和c

给定三个数字“ 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→a至b 2秒后

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

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

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

8秒:-a = 0,b = 0,c = 3→2秒后从a到b

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

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

14秒:-a = 0,b = 6(0 + 6),c = 0→2秒钟后从a到b

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

16秒:-a = 0,b = 0,c = 6→2秒钟后从a到b

18秒:-a = 0,b = 0,c = 6→2秒钟后从a到b

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

以下程序中使用的方法如下

秒的LCM为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 + 1遍历以输入秒数,并使用mod 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)。(临时 

  • 现在,将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 << "对于给定的播放速率,n秒后的a计数为: " << a << "\n";
   cout << "对于给定的播放速率,n秒后的b计数为: " << b << "\n";
   cout << "对于给定的播放速率,n秒后的c计数为: " << 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;
}

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

输出结果

对于给定的播放速率,n秒后的a计数为: 68
对于给定的播放速率,n秒后的b计数为: 0对于给定的播放速率,n秒后的c计数为: 0

猜你喜欢