Diberikan urutan bilangan bulat menemukan jumlah terbesar dari urutan (bilangan bulat pada posisi berurutan) dari urutan. Urutan selanjutnya bisa kosong (dalam hal ini jumlahnya adalah 0).
Input dibaca dari input standar, satu bilangan bulat per baris. Jumlah terbesar harus ditulis ke output standar.
Saya menulis generator kecil untuk Anda:
#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;
}
Contoh:
$ 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
adalah solusi saya./a.out
adalah generatornya
Solusi Anda harus berjalan dalam waktu yang wajar untuk semua tes di atas (milik saya berjalan di 1.2s pada kasus tes terakhir).
Kode terpendek menang.
Sunting : Berikan contoh yang dijalankan pada salah satu tes di atas.
while (i--);
tidak seharusnya diakhiri dengan tanda titik koma, bukan?
#include <stdlib.h>
untukatoi()
.