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 |
为什么我的代码AC不了,楼上给的测试数据都过了!!!求大神解救。#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