Member 13937088 Ответов: 4

Модифицированная задача Фибоначчи


Как известно, в ряду Фибоначчи каждое число после первых двух является суммой двух предыдущих.

Вместо того чтобы сложить два предыдущих числа, умножьте их и выведите результат по модулю 10^9+7.

Поскольку это легко, давайте сделаем его немного сложнее. Пусть"говорят, что существуют числа k, для начала.

Вы должны найти n-е число, где n-е число будет произведением k предыдущих чисел по модулю 10^9+7.

Ограничения
1<=t<=10

1<=n<=10^6

1<=k<=10

1<=k[i]<=100

входной формат
Первая строка содержит T количество тестовых случаев,

В каждом тестовом случае

Первая строка содержит два целых числа n, k, разделенных пробелом

Вторая строка содержит k целых чисел, разделенных пробелом

Выход
T линий, каждая линия содержит модифицированное число Фибоначчи по модулю 109+7


Объяснение
Пример 1

Ввод

1

4 3

1 2 3

Выход

6

Объяснение

4-е модифицированное число Фибоначчи будет 1*2*3=6

Пример 2

Ввод

1

10 3

1 2 3

Выход

845114970

Объяснение

4-е , 5-е , 6-е модифицированные числа Фибоначчи равны соответственно 6 , 36 , 648

Аналогично 10-е модифицированное число Фибоначчи будет 845114970


пожалуйста, напишите код

Что я уже пробовал:

я не пытался, потому что не мог понять код

4 Ответов

Рейтинг:
2

Patrice T

Цитата:
пожалуйста, напишите код

Пожалуйста, заплатите за работу. :)
Цитата:
я не пытался, потому что не мог понять код

А потом ты провалил испытание.

Мы не делаем вашу домашнюю работу.
Домашнее задание не предназначено для проверки ваших навыков просить других людей сделать вашу работу, оно предназначено для того, чтобы заставить вас думать и помочь вашему учителю проверить ваше понимание курсов, которые вы прошли, а также проблем, которые вы испытываете при их применении.
Любая ваша неудача поможет учителю выявить ваши слабости и наметить меры по исправлению положения.
Любая ваша неудача поможет вам узнать, что работает, а что нет, это называется "методом проб и ошибок".
Так что попробуйте, перечитайте свои уроки и приступайте к работе. Если вы застряли на конкретной проблеме, покажите свой код и объясните эту точную проблему, мы можем помочь.

Как программист, ваша задача-создавать алгоритмы это решает конкретные проблемы, и вы не можете полагаться на кого-то другого, чтобы вечно делать это за вас, поэтому есть время, когда вам придется научиться этому. И чем скорее, тем лучше.
Когда вы просто просите решение, это похоже на попытку научиться водить машину, обучая кого-то другого.
Создание алгоритма - это в основном поиск математики и необходимая адаптация к вашей реальной проблеме.


Рейтинг:
2

Bhanuvardhan Reddy Avula

#include<stdio.h>
#define Modulo 1000000007
long long int Num2Mod(long long int A,long long int B);
main()
{
	int K[10],n,k,i,j,t;
	long long int product,list[1000000];
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d",&n,&k);
		for(i=0;i<k;i++)
		{
			scanf("%d",&K[i]);
			list[i]=K[i];
		}
		for(i=0;i<n-2;i++)
		{
			product = 1;
			for(j=0;j<k;j++)
				product = Num2Mod(product,list[i+j]);
			list[i+k] = product;
		}
		printf("%lld",list[n-1]);
	}
}
long long int Num2Mod(long long int A,long long int B)
{
	return ((A%Modulo*B%Modulo)%Modulo);
}


[no name]

код не компилируется пустая трата времени бханувардханредди

Richard MacCutchan

Вы не помогаете людям, выполняя за них их работу.

Рейтинг:
0

OriginalGriff

Цитата:
пожалуйста, напишите код
Нет.
Мы не делаем домашнее задание: оно задано не просто так. Она существует для того, чтобы вы думали о том, что вам сказали, и пытались понять это. Он также существует для того, чтобы ваш наставник мог определить области, в которых вы слабы, и сосредоточить больше внимания на корректирующих действиях.

Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете!

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!


Рейтинг:
0

Member 13937460

#включить<stdio.h>
#определите остаток от деления на 1000000007
длинный инт Num2Mod(длинный инт а длинный инт Б);
главный()
{
int K[10],n,k,i,j,t,first,second =1;
long long int product,список[1000000];
scanf("%d",&t);
while(t--)
{
то scanf("%д%д",&амп;Н&усилителя;к);
для(i=0;i<k;i++)
{
scanf("%d",&K[i]);
list[i]=K[i];
}
для(i=0;i<n-2;i++)
{
продукт = 1;
для(j=0;j<k;j++)
product = Num2Mod(product,list[i+j]);
Список[i+k] = продукт;
}
printf("%lld\n",список[n-1]);
}
}
длинный инт Num2Mod(длинный инт а длинный инт Б)
{
вернуться ((в%по модулю*Б%по модулю)%остаток от деления);
}


[no name]

не рекомендуется снова ошибка приходит

Patrice T

Повторная публикация кода из решения 3 не создает нового решения.