Loading...
MartinRusanov avatar MartinRusanov 95 Точки

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] включително? Моята идея е да направя вложен цикъл.

Тагове:
0
Fundamentals Module
dancho_ivanov avatar dancho_ivanov 1 Точки

Здравей ,

Имах проблем с тази задача - Джъджа ми даваше 80/100 и се чудих какво става. След като прочетох поста ти, си оправих проблема веднага. Пращам ти кода който дава 80/100. Надявам се че ще ти е от полза да разбереш задачата.

using System;
class Last_K_Numbers_Sums_Sequence
{
    static void Main(string[] args)
    {
        int n = int.Parse(Console.ReadLine());
        int k = int.Parse(Console.ReadLine());
        int[] arr = new int[n];
        arr[0] = 1;
        for (int indexInSeq = 1; indexInSeq < n; indexInSeq++)
        {
            int result = 0;
            for (int prevIndexOfSeq = indexInSeq - 1; prevIndexOfSeq >= 0 && prevIndexOfSeq >= indexInSeq - k; prevIndexOfSeq--)
            {
                result = result + arr[prevIndexOfSeq];
            }
            arr[indexInSeq] = result;
        }
        Console.WriteLine(String.Join(" ", arr));
    }
}

0
SEFMP_Andromeda avatar SEFMP_Andromeda 0 Точки

Ето едно малко по нестандартно решение.

Елементите от 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);
        }
    }
}

0
borislav9212 avatar borislav9212 745 Точки

Казано е [0] = 1, тоест първият елемнт започва от 1, преди 1 имаш "0" -> 0 0 1 , събираш ги и 0+0+1 = 0 1 1 -> 1 1 2 -> 1 1 2 4 -> 1 1 2 4 7 -> 1 1 2 4 7 13. Да с вложен цикъл ще стане. Правиш си един масив от long, ще ти трябва да инизиализираш една сума = 0; И в цикъла си ги сумираш sum += arr[j]; В краен случай погледни решението ми , но първо се опитай сам да си я решиш http://pastebin.com/ZZvvWzur и още едно по кратко http://pastebin.com/t83SZ36S

2
29/05/2016 14:26:38
rosen.totev avatar rosen.totev 5 Точки

Help! Дава ми грешка по време на изпълнение за тест 5. Скъса ми нервите тази задача, само тя остана. От къде мога да намеря входа и изхода на тест 5? Или да помогнете къде греша ето го кодът http://pastebin.com/ujW3hEKi 

0
XuTkO avatar XuTkO 2 Точки

Давам ви решение на Java:

https://pastebin.com/bn89Pxvj

Заради един long ми даваше 70/100

 

0
plamen1982 avatar plamen1982 1 Точки

https://pastebin.com/3TesVP37 - дава ми 90/100 :(

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.