poj 1001 uva 748 Exponentiation(高精度小数乘法)
来源:互联网 发布:手机淘宝怎么发买家秀 编辑:程序博客网 时间:2024/05/01 08:34
题意是求R的n次方,R为0.0 到 99.999 的小数。
几个细节,一个是小数点的摆放位置;一个是小数点后无效的零要去掉;一个是结果的前导零和后导零都要去掉;还有一个是如果结果是整数,不输出小数点。
一个技巧,直接用一个base保存原来的数,省去不少空间,还降低了代码的复杂度。酷炫到没朋友。
代码:
#include <stdio.h>#include <iostream>using namespace std;const int Maxn = 200;int main(){ #ifdef LOCAL freopen("in.txt", "r", stdin); #endif // LOCAL int s[Maxn];//记录最终结果 char R[7];//底数 int n;//幂 while (cin >> R >> n) { int base = 0;//记录去小数点后的数字 int dot = -1;//记录小数点 for (int i = 0; i < 6; i++) { if (R[i] == '.') { dot = 6- 1 - i; } else { base = base * 10 + R[i] - '0'; } } //printf("%d\n", base); //处理小数点后无效零的情况 if (dot) { for (int i = 5; R[i] == '0'; i--) { base /= 10; dot--; } } //printf("%d\n", base); //结果的小数的位数 dot *= n; //printf("%d\n", dot); //把base赋值入数组num[]中,为大数乘法做准备 int tmp = base; for (int i = 0; i < Maxn; i++) { s[i] = tmp % 10; tmp /= 10; } //乘法运算 for (int j = 1; j < n; j++) { int jinwei = 0; for (int i = 0; i < Maxn; i++) { s[i] = s[i] * base + jinwei; jinwei = s[i] / 10; s[i] %= 10; } } int len = Maxn - 1; /*for (; len >= 0; len--) if (s[len]) break;*/ while (!s[len]) len--; if (dot > len)//结果无整数部分 { cout << "."; for (int i = dot - 1; i >= 0; i--) cout << s[i]; } else//结果有整数部分 { for (; len > dot - 1; len--) cout << s[len]; if (len >= 0) cout << "."; for (; len >= 0; len--) cout << s[len]; } cout << endl; } return 0;}
0 0
- poj 1001 uva 748 Exponentiation(高精度小数乘法)
- uva 748 Exponentiation(高精度实数乘法)
- UVA 748 Exponentiation 高精度乘法
- poj 1001 Exponentiation(高精度乘法)
- POJ 1001 Exponentiation (高精度/大数乘法)
- POJ 1001 Exponentiation(高精度乘法)
- poj 1001 (Exponentiation) 高精度乘法
- 【POJ】 1001-Exponentiation 【高精度乘法】
- POJ 1001 Exponentiation 高精度乘法
- poj 1001 Exponentiation 高精度乘法
- POJ 1001 Exponentiation 高精度小数相乘
- POJ 1001Exponentiation(高精度浮点乘法)
- hdu 1063 Exponentiation (高精度小数乘法)
- UVA - 748 Exponentiation 高精度
- [转]POJ 1001 Exponentiation Java大数处理高精度小数
- POJ 2390 (小数高精度乘法)
- POJ-1001 Exponentiation 高精度
- Exponentiation - POJ 1001 高精度
- Note 1 : JQuery 性能优化
- 重构个人版机房收费系统—存储过程
- ACM:最短路,dijkstra,邻接表的建立,使用邻接表跟优先队列的dijkstra,Bellman-Ford,Floyd。。
- java实现定时器,定时修改数据库代码
- 网页设计常用色彩搭配表
- poj 1001 uva 748 Exponentiation(高精度小数乘法)
- Note2 : MySql 逻辑查询处理
- HDU3613 Best Reward
- 【hoj】2651 pie 二分查找
- Note3 : EXISTS、NOT EXISTS、IN、NOT IN使用
- crm2011处理save事件和获取当前窗体信息
- 《C专家编程》学习笔记(运动的诗章:运行时的数据结构)
- MongoDB学习01之安装
- 【iOS开发】 UISegmentedControl 几种手势应用