পূর্ণসংখ্যার একটি সিক্যুয়েন্স দেওয়া সিক্যুয়েন্সের একটি ধারাবাহিক (পরের অবস্থানের উপর পূর্ণসংখ্যার) সবচেয়ে বড় যোগফলটি সন্ধান করে। অনুচ্ছেদটি খালি থাকতে পারে (সেক্ষেত্রে যোগফল 0 হয়)।
ইনপুট স্ট্যান্ডার্ড ইনপুট থেকে পঠিত হয়, প্রতি লাইনে একটি পূর্ণসংখ্যা। বৃহত্তম অঙ্কটি অবশ্যই স্ট্যান্ডার্ড আউটপুটকে লিখতে হবে।
আমি আপনার জন্য একটি ছোট জেনারেটর লিখেছি:
#include <stdio.h>
#include <assert.h>
/* From http://en.wikipedia.org/wiki/Random_number_generation */
unsigned m_w;
unsigned m_z;
unsigned get_random()
{
m_z = 36969 * (m_z & 65535) + (m_z >> 16);
m_w = 18000 * (m_w & 65535) + (m_w >> 16);
return (m_z << 16) + m_w; /* 32-bit result */
}
int main(int argc, char **argv)
{
int i;
assert(argc == 3);
m_w = atoi(argv[1]);
m_z = atoi(argv[2]);
i = 10;
while (i--);
get_random();
i = atoi(argv[2]);
while (i--)
printf("%d\n", (int) get_random() << 8 >> 22);
return 0;
}
উদাহরণ:
$ printf "1\n2\n-1\n4\n" | ./sum
6
$ printf "0\n-2\n-3\n" | ./sum
0
$ ./a.out 1 1 | ./sum
387
$ ./a.out 1 10 | ./sum
571
$ ./a.out 1 100 | ./sum
5867
$ ./a.out 1 1000 | ./sum
7531
$ ./a.out 1 10000 | ./sum
27268
$ ./a.out 1 100000 | ./sum
101332
$ ./a.out 1 1000000 | ./sum
187480
$ ./a.out 1 10000000 | ./sum
666307
./sum
আমার সমাধান./a.out
জেনারেটর হয়
উপরের সমস্ত পরীক্ষার জন্য আপনার সমাধানটি অবশ্যই যুক্তিসঙ্গত সময়ে চলতে হবে (শেষ পরীক্ষার ক্ষেত্রে আমার 1.2 দশকে চলেছে)।
সংক্ষিপ্ততম কোড জিতেছে।
সম্পাদনা করুন : দয়া করে উপরের পরীক্ষাগুলির মধ্যে একটিতে চালিত উদাহরণ সরবরাহ করুন।
while (i--);
সেমিকোলনে শেষ হওয়া উচিত নয়, এটি করা উচিত?
#include <stdlib.h>
জন্যatoi()
।