Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:为什么我的代码AC不了,楼上给的测试数据都过了!!!求大神解救。In Reply To:为什么我的代码AC不了,楼上给的测试数据都过了!!!求大神解救。 Posted by:yd_liu at 2014-11-12 12:47:46 > #include <stdio.h> > //#include <stdlib.h> > #include <string.h> > > void add(char a[], char b[], int len1, int len2){ > int index; > for(index = len1; index >= len2; index--){ > if (a[index]+b[index]-'0'-'0' >= 10){ > a[index] = a[index]+b[index]-'0'-10; > a[index-1] += 1; > } > else a[index] = a[index]+b[index]-'0'; > } > } > > int main(){ > freopen("input.txt","r",stdin); > freopen("output.txt","w",stdout); > > char result_temp1[131], result_temp2[131], result[131]; > char base[7]; > char r[7]; > int i, j, k, n, real_num, decimal_num, temp, mul_temp; //num = the number of > > memset(r,'\0',sizeof(r)); > > while(scanf("%s%d",r,&n) != EOF){ > memset(result, '0', sizeof(result)); > memset(base,'\0',sizeof(base)); > //input > real_num = 0; > decimal_num = 0; > for(i = 0; i < strlen(r); i++) > if (r[i] == '.') break; > for(j = 0; j < i; j++) > if (r[j] == '0') continue; > else break; > for(k = j; k < i; k++) > base[real_num++] = r[k]; > for(j = strlen(r)-1; j > i; j--) > if (r[j] == '0') continue; > else break; > for(k = i+1; k <= j; k++){ > base[real_num++] = r[k]; > decimal_num++; > } > for(i = 0; i < strlen(base); i++) > if (base[i] == '0') continue; > else break; > if (i){ > real_num = 0; > for(j = i; j < strlen(base); j++) > base[real_num++] = base[j]; > for(k = real_num; k < strlen(base); k++) > base[k] = '\0'; > } > memcpy(&result[130-real_num], base, real_num); > //process > for(k = 0; k < n-1; k++){ > memset(result_temp2, '0', sizeof(result_temp2)); > for(i = strlen(base)-1; i >= 0; i--){ > memset(result_temp1, '0', sizeof(result_temp1)); > mul_temp = 0; > for(j = 0; j < real_num; j++){ > temp = (base[i]-'0')*(result[130-1-j]-'0'); > temp += mul_temp; > result_temp1[130-1-j-(strlen(base)-1-i)] += temp%10; > mul_temp = temp/10; > } > result_temp1[130-1-real_num-(strlen(base)-1-i)] += mul_temp; > add(result_temp2, result_temp1, 130-1, 130-1-real_num-(strlen(base)-1-i)); > } > memcpy(result,result_temp2,sizeof(result)); > if (mul_temp == 0) real_num += (strlen(base)-1); > else real_num += strlen(base); > } > //output > memset(result_temp1, '\0', sizeof(result_temp1)); > if (decimal_num*n == 0) memcpy(result_temp1, &result[130-real_num], real_num); > else if (decimal_num*n < real_num){ > memcpy(result_temp1, &result[130-real_num], real_num-decimal_num*n); > result_temp1[real_num-decimal_num*n] = '.'; > memcpy(&result_temp1[real_num-decimal_num*n+1], &result[130-decimal_num*n], decimal_num*n); > } > else{ > result_temp1[0] = '.'; > memset(&result_temp1[1], '0', decimal_num*n-real_num); > memcpy(&result_temp1[decimal_num*n-real_num+1], &result[130-real_num], real_num); > } > > puts(result_temp1); > memset(r,'\0',sizeof(r)); > } > > //system("pause"); > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator