UVA 748 Exponentiation
来源:互联网 发布:数据采集器 编辑:程序博客网 时间:2024/05/21 17:02
UVA-748
题意:给出数字r和n, 求r^n。
解题思路:题目需要高精计算,先知道小数点在哪里(知道有几位小数,假设有m),然后无视掉小数点把所有数字进行高精乘。然后小数的位数为 n*m。
/************************************************************************* > File Name: UVA-748.cpp > Author: Narsh > > Created Time: 2016年07月18日 星期一 20时34分49秒 ************************************************************************/#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;int n,m,a[330],t[630000],la,lt,l,tmp[630000];string s;int main() { while (cin>>s>>n) { la=lt=0; l=s.length(); memset(t,0,sizeof(t)); for (int i = 1; i <= l; i++) if (s[l-i] != '.' ) { la++; a[la]=s[l-i] - '0'; lt++; t[lt]=s[l-i] - '0'; } else m=i-1; for (int q= 2; q <= n; q++) { memset(tmp,0,sizeof(tmp)); for (int i = 1; i <= lt; i++) for (int j = 1; j <= la; j++) tmp[i+j-1]+=a[j]*t[i]; lt = lt+la-1; for (int i = 1; i <= lt; i++) { tmp[i+1]+=tmp[i]/10; tmp[i]=tmp[i]% 10; t[i] = tmp[i]; } if (tmp[lt+1]) t[++lt] = tmp[lt]; while (!t[lt]) lt--; } int i=lt; int ll = 1; while (t[ll] == 0) ll++; if (m*n > i) i = m*n; for (;i >= ll; i--) { if (i == m*n) printf("."); printf("%d",t[i]); } printf("\n"); }}
0 0
- UVa 748 Exponentiation
- UVa OJ 748-Exponentiation
- uva 748 - Exponentiation
- UVA 试题 748 - Exponentiation
- UVa 748 - Exponentiation
- UVa 748 - Exponentiation
- UVa 748Exponentiation
- uva 748Exponentiation
- UVA 748 Exponentiation
- UVA 748 - Exponentiation
- UVA 748 Exponentiation
- UVa 748 - Exponentiation
- uva 748 Exponentiation
- UVa 748 - Exponentiation
- UVa:748 - Exponentiation
- UVa 748 - Exponentiation
- UVa-748-Exponentiation
- UVA - 748 Exponentiation
- 290. Word Pattern
- IDEA 16在线注册方式
- android知识总结--Intent
- cuda使用fft报错
- linux中samba安装
- UVA 748 Exponentiation
- Mysql 1064错误
- web组件之Filter
- 在Virtual Box上设置Host和VM之间的共享目录
- 毕业生网站:多条件搜索
- L3-011. 直捣黄龙
- Mockito浅谈
- Hibernate中HelloWorld代码实现部分
- jquery插件开发