Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

напишите программу на С или на С++

Никита Кадуков Знаток (328), закрыт 6 лет назад
Нечётная прогрессия
Известны количество и сумма нескольких подряд идущих нечётных чисел. Нужно найти
эти числа.
Со стандартного устройства ввода вводятся 2 натуральных числа – N и S, не
превосходящих 2000, – количество и сумма.
Нужно выдать на стандартное устройство вывода через пробел N искомых целых
нечётных чисел. Пробел в конце строки не ставить.
Пример
входные данные выходные данные
5 35 3 5 7 9 11
1 49 49
Лучший ответ
Jurijus Zaksas Искусственный Интеллект (426074) 6 лет назад
int n;
int s;
scanf("%d", &n);
scanf("%d", &s);
if (s % n != 0)
{
printf("Not a valid sum");
return 1;
}
int a1 = s/n + 1 - n;
if (a1 % 2 == 0) printf("Not a sum of odds");
else
for (int i = 0; i < n; i++)
printf("%d", a1+(i << 1));
Источник: зачем программистам математика?
Никита КадуковЗнаток (328) 6 лет назад
огромное спасибо
Остальные ответы
李西青 Просветленный (42546) 6 лет назад
у тебя пример какой-то мусорный
Андрей Высший разум (427506) 6 лет назад
Школа, арифметическая прогрессия:
S = (a + b) * N / 2

Так как числа нечётные, то:
b = a + 2 * (N - 1)
S = (a + a + 2 * (N - 1)) * N / 2 = (a + N - 1) * N
a + N - 1 = S / N
a = S / N + 1 - N

Получаем:

int a, S, N;
cin >> N >> S;
a = S / N + 1 - N;
for(int i = 0; i < N; a += 2) {
if (i++) { cout << ' '; }
cout << a;
}
Никита КадуковЗнаток (328) 6 лет назад
большое спасибо
AydarZakirov Ученик (246) 4 года назад
на С по простому
#include
int main() {
int n, s, mid, step, num, i;
scanf("%d %d", &n, &s);
if(s % 2 == 0) mid = s / n + 1;
else mid = s / n;
step = (n / 2);
num = mid - (2 * step);
for (i = 1; i <= n; ++i)
{
if(i == n) printf("%d", num);
else printf("%d ", num);
num += 2;

}
return 0;
}
Похожие вопросы