이 문제에서는 수의 n항이 주어집니다. 시리즈는 0.7, 0.77, 0.777… 우리의 임무는 시리즈 0.7, 0.77, 0.777 ... 최대 n개의 항의 sim을 찾는 프로그램을 만드는 것입니다.
문제를 이해하기 위해 예를 들어 보겠습니다.
입력 4
출력
설명 - 0.7 + 0.77 + 0.777 + 0.7777 =3.0247
이 문제를 해결하기 위해 급수의 합 공식을 도출합니다. 이에 대한 일반 공식을 찾아보겠습니다.
sum = 0.7 + 0.77 + 0.777 + ... upto n terms sum = 7 (0.1 + 0.11 + 0.111 + … upto n terms) sum = 7 (9/9)(0.1 + 0.11 + 0.111 + … upto n terms) sum = 7/9(0.9 + 0.99 + 0.999 + … upto n terms) sum = 7/9 ( (1 - 0.1) + (1 - 0.01) + (1 - 0.001) + … upto n terms ) sum = 7/9 ( (1+ 1 + 1 + … + upto n) - (0.1 + 0.01 + 0.001 + … upto n terms) ) sum = 7/9 ( (n) - (1/10 + 1/100 + 1/1000 + … upto n terms) ) sum = 7/9 ( n - 0.1 * ((1 - (0.1)n)/ (1 - 0.1)) ) sum = 7/9 ( n - 0.1 * ((1 - (0.1)n)/ (0.9)) ) sum = 7/9 ( n - ((1 - (1/10n) )/9) ) sum = 7/81 ( 9n - (1 - (1/10n) ) ) sum = 7/81 (9n - 1 + 10-n)
이 공식은 n항까지의 급수의 합에 대한 일반 공식을 제공합니다.
예시
솔루션의 작동을 설명하는 프로그램,
#include <iostream> #include <math.h> using namespace std; float calcSeriesSum(int n) { return ( (.08641) * (9*n - 1) + pow(10, (-1) * n) ); } int main() { int n = 5; cout<<"The sum of series 0.7, 0.77, 0.777, ... upto n terms is "<<calcSeriesSum(n); return 0; }
출력
The sum of series 0.7, 0.77, 0.777, ... upto n terms is 3.80205