UVA748 Exponentiation 解题报告
2013-01-27 13:31
447 查看
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=689
题目大意:实数阶乘
题目考点:大数模拟
解题思路:把实数转化为整数,输出时再加小数点;
题目代码:
View Code
题目大意:实数阶乘
题目考点:大数模拟
解题思路:把实数转化为整数,输出时再加小数点;
题目代码:
View Code
// File Name: uva748.c // Author: darkdream // Created Time: 2013年01月27日 星期日 11时15分03秒 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> #include<math.h> #define clean(b) memset(b,0,sizeof(b)) char a[100]; int change(char a[],int b[]) { int i , t = -1, j = 0 ; for (i = strlen(a)-1; i >= 0; i--) if(a[i] == '.') { t = i ; } else { b[j++] = a[i] -'0'; } if (t != -1) return strlen(a) - t -1 ; else return -1 ; } int strle(int c[]) { int i ; for (i = 550 ;i >=0 ;i --) if (c[i] != 0) break; return i + 1 ; } void mu(int c[],int d[], int e[]) { void print(); int i ,j, k ,t ; for (i =0 ;i < strle(c) ;i ++) { int s = 0 ; for (j = 0 ; j < strle(d) ;j++) { t = c[i]*d[j] +s +e[i+j] ; s = t / 10 ; e[i+j] = t % 10 ; } for (j = i+j ; j< 550 ; j++) { t = e[j] + s; s = t /10 ; e[j] = t %10 ; } } } void print(int t , int c[]) { int i , j ,k ; for (i = 550 ;i >= 0; i --) if(c[i] != 0) break; if (i < t -1 ) { printf("."); for (k =i ; k < t-1 ; k++) printf("0"); } for (j = 0 ; j < t ; j++) if (c[j] != 0) break; for (; i >= j ; i--) { if (i == t-1) printf("."); printf("%d",c[i]); } printf("\n"); } int main(){ while(scanf("%s",a) != EOF) { int n , d[600], e[600] , f[600]; clean(d); clean(e); clean(f); scanf("%d",&n); int i , j , k , l , t; t = change(a , d); t = t * n ; memcpy(e , d ,sizeof(d) ); if (n >1) mu(d,e,f); else memcpy(f,e,sizeof(e)); for (i = 3 ; i <= n; i++) { memcpy(d,f,sizeof(f)); clean(f); mu(d,e,f); } print(t,f); } return 0 ; }
相关文章推荐
- UVA11367 加满油 解题报告
- {UVA} UVA-490 解题报告
- 【解题报告】uva103_Stacking Boxes(堆砌盒子, dp)
- 【解题报告】uva10131_Is Bigger Smarter?(越大越聪明, dp, LIS)
- 【解题报告】uva10192_Vacation(假期, dp, LCS)
- uva 12096 The SetStack Computer 解题报告
- 解题报告 之 UVA1347 Tour
- uva1601(The morning after Helloween)解题报告
- UVa 11627 Slalom 解题报告(二分)
- UVa 1382 Distant Galaxy 解题报告(枚举 + 前缀和)
- acm-UVA11935解题报告
- UVa 11806 Cheerleaders 解题报告(容斥原理)
- UVa 1585 - Score - ACM/ICPC Seoul 2005 解题报告 - C语言
- UVa 1225 - Digit Counting - ACM/ICPC Danang 2007 解题报告 - C语言
- Uva 1350 - Pinary 解题报告(斐波那契+二分)
- Uva 10157 - Expressions 解题报告(递推)
- UVA 539 - The Settlers of Catan 解题报告
- UVA 12538 Version Controlled IDE 解题报告
- UVa 10935 解题报告
- 2018.2.1【 UVA - 156 】解题报告(STL,set,multiset,make_pair)