Member 12660652 Ответов: 2

Нужен программный код C или cpp для решения следующей задачи


<pre lang="c++">
Проблема : Сумма Vita

Кот Том оттачивает свои математические навыки. У него есть сумка, содержащая N шариков разных цветов. Теперь том может случайным образом выбрать любое четное количество шаров из мешка. Том хочет узнать сумму всех таких комбинаций шаров, которые он может вытащить из мешка. Учитывая, что он может вытащить максимум K шаров за один выбор.



входной формат:

Первая строка содержит два числа через пробел N и K



выходной формат:

Выход-это сумма всех комбинаций шаров, которые он может вытащить по модулю 10^9+7, т. е. (1000000007)



Ограничения:



1.0<=N,k<=10^9
2.N >= k




Вход и выход образца



СНО.

Ввод

Выход

Объяснение

1
4 4

8

Нам нужно 4C0 + 4C2+ 4C4= 1+6+1=8

2
8 3

29

Нам нужно 8C0 + 8C2= 1+28=29

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

я попытался решить петлю для вышеуказанной проблемы.

jeron1

"я попытался решить петлю для вышеупомянутой проблемы." Хорошо, опубликуйте то, что вы пробовали, и задайте конкретный вопрос.

phoenix@6714

как я могу увидеть решение?

jeron1

Опубликуйте то, что вы пробовали.

Richard MacCutchan

Забудьте на минуту о программировании и используйте лист бумаги, чтобы записать шаги, необходимые для решения уравнений.

Richard MacCutchan

Смотрите мое сообщение выше от прошлого года.

Patrice T

После 1 года вам все еще нечего показать, нет конкретной проблемы ?

2 Ответов

Рейтинг:
2

Lawliet_

#include<stdio.h>
int fast_pow(long long base, long long n,long long M)
{
    if(n==0)
       return 1;
    if(n==1)
    return base;
    long long halfn=fast_pow(base,n/2,M);
    if(n%2==0)
        return ( halfn * halfn ) % M;
    else
        return ( ( ( halfn * halfn ) % M ) * base ) % M;
}
int findMMI_fermat(int n,int M)
{
    return fast_pow(n,M-2,M);
}
int main()
{
    long long fact[100001];
    fact[0]=1;
    int i=1;
    int MOD=1000000007;
    while(i<=100000)
    {
        fact[i]=(fact[i-1]*i)%MOD;
        i++;
    }
    
        int n,k;
        
        scanf("%d%d",&n,&k);
        if(k%2!=0)
        {
        	k=k-1;
		}
		
         long long numerator,denominator,mmi_denominator,ans=0;
        for(i=0;i<=k;i=i+2)
       
        //I declared these variable as long long so that there is no need to use explicit typecasting
     {   numerator=fact[n];
        denominator=(fact[i]*fact[n-i])%MOD;
        mmi_denominator=findMMI_fermat(denominator,MOD);
        ans=ans+(numerator*mmi_denominator)%MOD;
        
    }
    printf("%lld\n",ans);
    return 0;
}


Richard MacCutchan

Вы не помогаете людям, делая за них домашние задания.

Lawliet_

Это не вопрос для домашнего задания.Это вопрос, заданный в codevita 2016 (вчера этот конкурс был проведен).

Richard MacCutchan

Суть в том, что выполнение работы за людей не помогает им учиться.

Рейтинг:
1

Patrice T

Цитата:
Нужен программный код C или cpp для решения следующей задачи
Нет, мы не делаем твою домашнюю работу.
Попросите вашего учителя/наставника о помощи, он здесь для этого.
Вы никогда не научитесь программировать, прося других делать вашу работу. Чтение документации, следование инструкциям и практика-это единственные средства для изучения программирования.


phoenix@6714

как я могу увидеть решение