Найти сумму ряда - C (СИ) (70829)
Формулировка задачи:
По данному числу n вычислите сумму 1+1/22+1/32+...+1/n2.
Входные данные
Вводится одно число n, не превосходящее 100000.
Выходные данные
Необходимо вывести значение суммы.
Примеры
входные данные
2
выходные данные
1.25
Не работает, программа. Частичное решение, пройдено 16 из 17 тестов. Пишет, что надо использовать более длиныый тип. Помогите, пожалуйста.
#include <stdio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int i;
long long int n;
double x;
scanf("%d",&n );
x=0;
for (i = n; i >=1; i--)
{
x=x+(1.0/(i*i));
}
printf("%f",x);
system("Pause");
return 0;
}
Там По данному числу n вычислите сумму
Решение задачи: «Найти сумму ряда»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned long long a;
int n, i;
double S = 1;
puts("Input number <= 100 000:");
do{
scanf("%d", &n);
if(n <= 100000)
break;
puts("Less than 100 001,jerk!");
}while(1);
for(i = 0; i <= n; ++i){
a = i * 10 + 2;
S += (double)1 / a;
}
printf("%g\n", S);
S = 1;
for(i = 2; i <= n; ++i){
a = i * i;
S += (double)1 / a;
}
printf("%g\n", S);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
a- для хранения значения каждого элемента ряда,n- для хранения количества элементов ряда,i- для использования в цикле,S- для хранения суммы ряда.
- Выводится сообщение с просьбой ввести число, не превышающее 100 000.
- Используется цикл do-while, чтобы проверить, введено ли число, не превышающее 100 000. Если это так, то цикл прерывается, иначе пользователю выводится сообщение
Less than 100 001,jerk!. - Используется цикл for для прохода по каждому элементу ряда от 0 до n. Для каждого элемента вычисляется значение
aи суммаSувеличивается на 1/a. - Используется еще один цикл for для прохода по всем элементам ряда от 2 до n (исключая 1). Для каждого элемента вычисляется значение
aи суммаSувеличивается на 1/a. - Выводится итоговая сумма ряда.
- Программа возвращает 0, заканчивая свою работу.