2015-04-10 3 views
2

Я должен найти накопленную сумму чисел без использования array.Like Если п = 3 & к = 5, то мой ответ будет идти, как этот пнакопленная сумма чисел

1+2+3+4+5 (sum of k elements) 
+ 1+3+6+10+15 
+ 1+4+10+20+35 
(i.e. n times) 

п & K в диапазоне от от 1 до 10^9

Здесь элементов из индекса 2 являются накопительной суммой от предыдущей серии из индекса 1 к индексу х, как

второго значение во второй серии 3, который является накопленной суммой с Шифрованием до Значение econd в предыдущей серии 1 + 2

третье значение во второй серии 6, который является накопленную сумму Шифрование до третьего значения в предыдущей серии 1 + 2 + 3

Аналогично третье значение в третьей серии 10, которая является кумулятивным сумма Шифрование до третьего значения в предыдущей серии 1 + 3 + 6 Мой подход до знать,

 //For n==1 
     for(i=0;i<k;i++) 
     { 
      a[i]=i+1; 
      sum = sum + a[i]%mod; 
     } 
     if(n==1) 
     { 
      printf("%lld\n",sum%mod); 
     } 
     //For n>1 
     else 
     { 
      res = (n-1)*k; 
      for(w=0;w<res;w++) 
      { 
       f = w%k; 
       if(f==0) 
       { 
        a[f] = 1; 
        sum = sum + a[f]%mod; 
       } 
       else 
       { 
        a[f] = a[f]+a[f-1]; 
        sum = sum + a[f]%mod; 
       } 
      } 
      printf("%lld\n",sum%mod); 
     } 

здесь я использовал массив, хранящий серии снова и снова, и найти свою накопленную сумму, но здесь п * к собирается слишком большой ,

Пожалуйста, помогите мне в этом, предлагая некоторые оптимизированный подход к этому Наконец я найти общую сумму всех этих чисел по модулю 1000003 1 + 2 + 3 + 4 + 5 + 1 + 3 + 6 + 10 + 15 + 1 + 4 + 10 + 20 + 35 = 120% 1000003 =

+0

И вы хотите, чтобы сделать это без использования массивов? – Shar1er80

+0

Да как k может быть 10^9 – sagar

+0

Пожалуйста, попробуйте использовать лучшие имена переменных, чем 'a, b, i, j, k, f ...' Или сократите свою функцию еще в нескольких других. – Aracthor

ответ

0

Предлагаю использовать рекурсию, так как вы не можете использовать массивы. Если вам нужно немного начать работу, дайте мне знать (это звучит очень похоже на тестовый вопрос, поэтому я не думаю, что должен просто изложить ответ).

0

Я могу указать одно простое наблюдение, как бы ни было множество элементов, так как вы должны вычеркнуть по модулю, наконец, если это modulo (M) является простым, а затем повторяет кумулятивную сумму n раз (где n> M) вы снова приземляетесь на исходный набор чисел для M итераций. Затем вам нужно иметь дело с остальными n-M итерациями.

вид: [https://en.wikipedia.org/wiki/Figurate_number]

Смежные вопросы