能力值:
( LV2,RANK:10 )
2 楼
这段C预言不是有人扩展过么
#include < stdio.h>
long a=10000, b, c=2800, d, e, f[2801], g;
main(){
while(b-c!=0){
f=a/5;
b++;
}
d=0;
g=c*2;
while(g!=0){
b=c;
d+=f*a;
f=d%--g;
d=d/g--;
--b;
while(b!=0){
d=d*b+f*a;
f=d%--g;
d=d/g--;
--b;
}
c-=14;
printf("%.4d",e+d/a);
e=d%a;
d=0;
g=c*2;
}
}
能力值:
( LV2,RANK:10 )
3 楼
第一次看到这段代码,收藏先。。。
lz好兴致,赞一个
能力值:
( LV9,RANK:210 )
4 楼
又优化了一下,ChopDown 的这段代码和我最后整理出来的思路基本一致,不过我原来没有看过这段,其实前面的 f=a/5完全可以改为f=2000,而在汇编语言中则可以直接定义成有初始值的数组。优化结果如下:
.586
.model flat, stdcall
option casemap :none
include MACRO.ASM
includelib msvcrt.lib
printf proto C :VARARG
.data
f dd 2801 dup(2000) ;因为有这种定义,省略了for(;b-c;)f[b++]=a/5;
.code ;a--->ebx,b、g--->ecx,d--->edi,e--->ebp,e--->esi
start: xor esi,esi ;e=0
mov ebp,2800 ;c=2800
mov ebx,10000
@1: xor edi,edi ;d=0
mov ecx,ebp ;b=c
@@: imul edi,ecx ;d=d*b
mov eax,[ecx*4+f] ;d+=f*a
mul ebx
add eax,edi
lea edi,[ecx*2-1]
div edi
mov [ecx*4+f],edx ;f=d%(2b-1)
mov edi,eax ;d=d/(2b-1)
loop @b
div ebx
add eax,esi ;e+d/a
mov esi,edx ;e=d%a
invoke printf,CTXT("%.4d"),eax
sub ebp,14 ;c-=14
jnz @1
ret
end start