高精度开跟模板(看不懂版)

 1 int work(int o,char *O,int I) { // 手动开根,试商 
 2     char c, *D=O ;
 3     if(o>0) {
 4         for(l=0;D[l];D[l++]-=10) {
 5             D[l++]-=120;
 6             D[l]-=110;
 7             while(!work(0,O,l)) D[l]+=20;
 8             putchar((D[l]+1032)/20);
 9         }
10         putchar('\n');
11     }
12     else {
13         c=o+(D[I]+82)%10-(I>l/2)*(D[I-l+I]+72)/10-9;
14         D[I]+=I<0 ? 0 : !(o=work(c/10,O,I-1))*((c+999)%10-(D[I]+92)%10);
15     }
16     return o;
17 }
18 int main() {
19     char s[205];s[0]='0';
20     scanf("%s",s+1);
21     if(strlen(s)%2 == 1) work(2,s+1,0);
22     else work(2,s,0);
23 }

 

你可能感兴趣的:(高精度开跟模板(看不懂版))