Task: | Kyselyt |
Sender: | yhyy |
Submission time: | 2017-10-06 21:36:15 +0300 |
Language: | Assembly |
Status: | READY |
Result: | 100 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 12 |
#2 | ACCEPTED | 25 |
#3 | ACCEPTED | 63 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.04 s | 1 | details |
#2 | ACCEPTED | 0.05 s | 2 | details |
#3 | ACCEPTED | 0.05 s | 3 | details |
Code
section .data section .bss syote resb 30000000 ; syöte buf resb 90090000 ; tuloste asd resb 1 section .text global _start _start: mov eax, 3 mov ebx, 0 mov ecx, syote mov edx, 30000000 int 0x80 ; lue syöte mov rsi, syote mov rdi, buf call read mov r15, rax ; n xor r14, r14 mov r13, buf ._00: call read mov r8, 1 mov r9, 9 mov r10, 1 ._0: mov rdx, r9 imul rdx, r8 cmp rax, rdx jle ._1 sub rax, rdx imul r9, 10 inc r8 imul r10, 10 jmp ._0 ._1: dec rax xor rdx, rdx cqo div r8 add rax, r10 mov r12, rsi mov rsi, rdi add rsi, rdx call print xchg rdi, r13 lodsb stosb mov al, ' ' stosb xchg rdi, r13 mov rsi, r12 inc r14 cmp r14, r15 jl ._00 xchg rdi, r13 .lopeta: call flush mov rax, 1 mov rbx, 0 int 0x80 ;) ****************** flush ********************* (; ; suoritetaan lopussa niin buf tulostuu flush: ;! huom sotkee lähes KAIKEN mov rdx, rdi sub rdx, buf mov rax, 4 mov rbx, 1 mov rcx, buf int 0x80 ret ;) ****************** read ********************* (; ;! rsi nykyinen kohta syötteessä ;) laittaa syötteestä yhden luvun rax <- x, rdx <- |x|, rbx <- sign(x) ;! 64-bit ;( sotkee rbx, rdx ja rax) read: mov rbx, 1 xor rdx, rdx xor rax, rax ._: lodsb cmp al, 0x2d je ._1 cmp al, 0x30 jl ._2 cmp al, 0x39 jg ._2 sub al, 0x30 imul rdx, 10 add rdx, rax cmp rdx, 0 jne ._ jmp ._3 ._1: mov rbx, -1 ._2: cmp rdx, 0 je ._ ._3: mov rax, rdx imul rax, rbx ret ;) ***************** debug_print ******************** (; ;) säilyttää rekisterit ;( aika häviö että 0x80 nollaa r8-r11 =/ ) debug_print: push r8 push r9 push r10 push r11 push rdi push rdx push rbx push rax push rcx call print call flush pop rcx pop rax pop rbx pop rdx pop rdi pop r11 pop r10 pop r9 pop r8 ret ;) ****************** print ********************* (; ;! rdi tärkeä ;( sotkee rax, rdx, rbx) print: cmp rax, 0 jnl ._ mov rdx, rax mov al, 0x2d ;- stosb mov rax, rdx imul rax, -1 ._: mov rbx, 0xa push rdi mov rdi, asd std ._1: xor rdx, rdx div rbx xchg rax, rdx add al, 0x30 stosb xchg rax, rdx cmp rax, 0 jne ._1 cld mov rdx, rsi mov rsi, rdi inc rsi pop rdi ._2: lodsb stosb cmp rsi, asd jng ._2 mov al, 0x20 stosb mov rsi, rdx ret
Test details
Test 1
Group: 1
Verdict: ACCEPTED
input |
---|
1000 582 214 723 273 ... |
correct output |
---|
0 1 7 7 6 ... |
user output |
---|
0 1 7 7 6 1 5 4 7 6 2 2 2 2 8 ... Truncated |
Test 2
Group: 2
Verdict: ACCEPTED
input |
---|
1000 615664 916441 627600 279508 ... |
correct output |
---|
1 2 3 2 2 ... |
user output |
---|
1 2 3 2 2 8 7 9 8 3 7 1 9 8 4 ... Truncated |
Test 3
Group: 3
Verdict: ACCEPTED
input |
---|
1000 672274832941907421 260504693279721732 646999966092970935 100853063389774434 ... |
correct output |
---|
7 2 2 0 9 ... |
user output |
---|
7 2 2 0 9 7 7 2 0 4 0 3 0 5 9 ... Truncated |