Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- void solve(char * number)
- {
- int x[3] = {};
- // check if digits
- for(int i=0; i<3; ++i)
- {
- if ( !isdigit(number[i]) ) return;
- x[i] = number[i] - '0';
- }
- // modify digits
- __asm__ ( "cmp %%eax, %%ebx;"
- "JNE NotEqual;" // x[0] != x[1]
- "cmp %%eax, %%ecx;"
- "JBE NotEqual;" // x[0] >= x[2]
- "mov $0, %%dl;" // dl = 0
- "add %%al, %%dl;" // dl += a[0]
- "add %%cl, %%dl;" // dl += a[2]
- "mov $9, %%dh;"
- "cmp %%dl, %%dh;"
- "JB Final;" // dl > dh
- "movl %%edx, %%ebx;" // x[1] = edx
- "JMP Final;"
- "NotEqual:" // swap(x[0], x[2])
- "movl %%eax, %%edx;"
- "movl %%ecx, %%eax;"
- "movl %%edx, %%ecx;"
- "Final:"
- : "=a"(x[0]), "=b"(x[1]), "=c"(x[2]): "a"(x[0]) , "b"(x[1]), "c"(x[2]) );
- // write to number
- for(int i=0; i<3; ++i)
- number[i] = x[i] + '0';
- }
- int main()
- {
- char data[4] = {};
- scanf("%s", data);
- solve(data);
- printf("%s", data);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment