对于C ++中给定的再现速率,在n秒后计算a,b和c
给定三个数字“a”,“b”和“c”作为输入。目的是在n秒后找到“a”,“b”和“c”的计数/值,以使复制速率为:-
每2秒将a更改为b
每5秒将b更改为c
每12秒,每c变为2a。
让我们通过示例来理解。
例如
输入-n_seconds=62a=1b=1c=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=20a=1b=1c=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至b2秒后
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遍历以输入秒数,并使用mod2、5或12进行计算。
以数字a,b和c作为输入。
以n_seconds为时间(以秒为单位)。
函数reproduction_rate(intn_seconds,inta,intb,intc)将获取所有参数,并以给定的播放速度在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