高精度开跟模板(看不懂版)
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 }