세 개의 숫자 'a', 'b' 및 'c'가 입력으로 주어집니다. 목표는 재생산 비율이 다음과 같이 되도록 n초 후에 'a', 'b' 및 'c'의 개수/값을 찾는 것입니다.
- Every 2초마다 b로 변경
- 모든 b는 5초마다 c로 변경됩니다.
- 모든 c는 12초마다 2로 변경됩니다.
예를 들어 이해합시다.
예를 들어
입력 - n_초 =62 a =1 b =1 c =1
출력 - 주어진 재생률에 대한 n초 후의 횟수:0
주어진 재생률에 대해 n초 후 b의 수는 다음과 같습니다. 33
주어진 재생률에 대해 n초 후 c의 수는 다음과 같습니다. 1
설명 - 60초 후에 a는 32, b =0, c =0이 됩니다.
2초 후에 모든 b는 c, c=1이 됩니다. 모두 b, b=33이 됩니다.
입력 - n_초 =20 a =1 b =1 c =1
출력 - 주어진 재생률에 대한 n초 후의 횟수: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 → c에서 12초 후 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로
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
초의 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를 사용하여 계산합니다.
- 숫자, b, c를 입력하세요.
- n_seconds를 초 단위로 계산합니다.
- Replication_rate(int n_seconds, int a, int b, int c) 함수는 모든 매개변수를 취하고 주어진 재생률에 대해 n초 후에 a, b 및 c의 개수를 인쇄합니다.
- temp =n_seconds / 60을 n_seconds 아래의 60의 배수로 취합니다.
- 수식에 주어진 대로 a =(int)pow(32, temp)를 계산합니다. ( 임시 )
- 이제 temp =60 * 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 루프의 끝에서, 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: 0Count of c after n seconds for given reproduction rate is: 0