Пример #1
0
int main(){
    long l,cas;
char fir[MAX],sec[MAX],res[MAX];
scanf("%ld",&cas);

for(l=0;l<cas;l++){
scanf("%s%s",&fir,&sec);
if(call_minus(fir,sec,res)==1)
printf("-");
int len = strlen(res);
for(int i=0;i<len;i++)
printf("%c",res[i]);
printf("\n");
}
return 0;
}
Пример #2
0
void call_sqrt(char *number,char *result,char *extra){
	int num,start,e,mul,l,r=0,len;
	char left[MAX],after[MAX];
	char who[5],temp[MAX],two[5];
	len=strlen(number);
	if(len%2==0){
		num=10*(number[0]-'0') + number[1]-'0';
		start=2;
	}
	else{
		num=number[0]-'0';
		start=1;
	}
	mul=(int) sqrt(num);
	result[0]=mul+'0';
	result[1]='\0';
	if(num-mul*mul ==0)
		extra[0]='\0';
	else
		sprintf(extra,"%d",num-mul*mul);
	for(;start<len;start+=2){
		e=strlen(extra);
		extra[e]=number[start];
		extra[e+1]=number[start+1];
		extra[e+2]='\0';
		two[0]='2';
		two[1]='\0';
		call_mult(result,two,left);
		l=strlen(left);
		for(mul=9;mul>=0;mul--){
			who[0]=mul+'0';
			who[1]='\0';
			strcat(left,who);
			call_mult(left,who,after);
			if(call_minus(extra,after,temp)==1){
				result[++r]=mul+'0';
				result[r+1]='\0';
				strcpy(extra,temp);
				break;
			}
			else
				left[l]='\0';
		}
	}
	result[++r]='\0';
}