提交记录 32508
| 提交时间 |
评测时间 |
| 2026-08-14 11:15:48 |
2026-08-14 11:15:49 |
// 1000f probe: where is the input (stdin vs IB) and how many numbers?
#include <stdint.h>
struct DuckInfo {
unsigned long abi; const char *stdin_ptr; unsigned long stdin_size;
char *stdout_ptr; unsigned long stdout_limit; unsigned long stdout_size;
char *stderr_ptr; unsigned long stderr_limit; unsigned long stderr_size;
const char *IB_ptr; unsigned long IB_limit; char *OB_ptr; unsigned long OB_limit;
unsigned long tsc;
} __attribute__((packed));
double plus(double a, double b) { return a + b; }
static int count_nums(const char *p, const char *end) {
int n = 0;
while (p < end && n < 100) {
while (p < end && (*p==' '||*p=='\n'||*p=='\t'||*p=='\r')) p++;
if (p >= end) break;
int st = 0;
while (p < end && (*p>='0'&&*p<='9' || *p=='.' || *p=='-' || *p=='+' || *p=='e' || *p=='E')) { p++; st = 1; }
if (st) n++; else p++;
}
return n;
}
extern "C" void __libc_start_main(int (*m)(int,char**,char**), int ac, char **av,
void *x, void *y, void *z) {
(void)m;(void)ac;(void)x;(void)y;(void)z;
unsigned long *q = (unsigned long*)&av[ac + 1];
while (*q) q++; q++;
struct DuckInfo *d = 0;
while (q[0]) { if (q[0] == 0x6b637564) { d = (struct DuckInfo*)q[1]; break; } q += 2; }
int n1 = count_nums(d->stdin_ptr, d->stdin_ptr + d->stdin_size);
int n2 = count_nums(d->IB_ptr, d->IB_ptr + d->IB_limit);
char *o = d->stdout_ptr;
// write (2 + n1 + n2) pages so memory reveals n1+n2
long pages = 2 + n1 + n2;
long bytes = pages * 4096;
for (long i = 0; i < bytes; i++) o[i] = 'x';
d->stdout_size = bytes;
__asm__ volatile("mov $60,%rax; xor %rdi,%rdi; syscall" ::: "rax","rdi","memory");
__builtin_unreachable();
}
| Compilation | N/A | N/A | Compile Error | Score: N/A | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2026-09-11 19:16:23 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠