Last K number sums Sequence
Здравейте,
бих искал малко помощ за задачата с Last K number sums. Четейки решението в слайдовете на Arrays Lab Виждам, че seq[0] = 1. При вход n = 6 и k = 3, когато current = 1 тогава var start = 0 и var end = 0. После в TODO на long sum пише, че трябва да сумираме стойностите на seq[start ... и seq end]. По тази логика в случай на current = 1 трябва да сумираме seq[0] + seq[0] и да го запишем в seq[current] което в случая е seq[1]. и така излиза, че първите 2 елемента на output-a са 1 2..., а не 1 1... както е дадено в примера на word документа. Това ми е първия проблем. Другия е да пипитам как да сумирам елементите в long sum от seq[start до seq[end] включително? Моята идея е да направя вложен цикъл.
Ето едно малко по нестандартно решение.
Елементите от 1 до к са степени на двойката.
След това се сумират по к-на брой елемента.
/*
* Created by SharpDevelop.
* User: Admin
* Date: 6/17/2019
* Time: 13:57 ч.
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Linq;
namespace PF_CSharp_6_7
{
class Program
{
public static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
long[] result = new long[n];
result [0] = 1;
int k = int.Parse(Console.ReadLine());
for (int i = 1; i<n; i++)
{
if (i<=k) result[i] = (long) Math.Pow(2,i-1);
else for (int j = i-k; j < i; j++) result[i] += result[j];
}
Console.WriteLine(string.Join(" ", result));
// Console.ReadKey(true);
}
}
}