Найти коэффициенты квадрата многочлена - C#
Формулировка задачи:
Я школу 20 лет назад закончил...я вообще ничего не помню по этой теме....
Я правильно понимаю что мне надо найти a, b и c ?
Хоть намекните кто-нибудь как это решается...я в шоке культурном нахожусь
Задание
Даны числа N (натуральное от 1 до 100),
(целые, по модулю не больше 1000)- коэффициенты многочлена от переменной :
От меня требуется найти 2*N+1 чисел - коэффициенты квадрата данного многочлена, начиная со старшего, т.е. многочлена .
Начальные данные: в первой строке ввода содержится число N, во второй строке - N+1 число:
через пробел.
Вывод результата: строка в которой 2*N+1 чисел выведены через пробел - коэффициенты возведенного в квадрат многочлена.
В примере
P(x)=x+3,
ответом будут числа 1,6 и 9
мне тут подсказывают что необходимо вывести формулы с 4, 5 и 6 коэф. тогда можно будет увидеть зависимость...
что такое x+3 - это 1*x+3
тогда если N=2, и a2=1, a1=4, a0=6 (допустим)...то
P(x)=1*x^1+4*x+6 , P(x)^2 = (x+4x+6)^2
я правильно понимаю данную тему?
Решение задачи: «Найти коэффициенты квадрата многочлена»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.IO;
namespace ConsoleApplication199
{
class Program
{
public static void Main()
{
//исходные коэффиценты по степеням X
var inputKoefs = new SortedDictionary<int, double>();
//вводим данные
Console.Write("N: ");
var n = int.Parse(Console.ReadLine());
//
Console.Write("Коэффициенты: ");
var parts = Console.ReadLine().Split(' ');
for (int i = 0; i < n + 1; i++)
inputKoefs[n - i] = double.Parse(parts[i]);
//считаем (результирующие коэфф по степеням X)
var outputKoefs = CalcSquare(inputKoefs);
//выводим
Console.WriteLine("Результат:");
foreach(var pair in outputKoefs)
Console.WriteLine("a{0}: {1:0.00}", pair.Key, pair.Value);
Console.ReadLine();
}
private static SortedDictionary<int, double> CalcSquare(SortedDictionary<int, double> inputKoefs)
{
var res = new SortedDictionary<int, double>();
foreach(var pair1 in inputKoefs)
foreach(var pair2 in inputKoefs)
{
var resPower = pair1.Key + pair2.Key;//степени складываются
var resKoef = pair1.Value*pair2.Value;//коэфф умножаются
if (res.ContainsKey(resPower))
res[resPower] += resKoef;//если такая степень уже была - добавляем коэфф к уже существующему
else
res[resPower] = resKoef;//если такой степени еще не было - просто запоминаем
}
return res;
}
}
}