乍一看就是大数乘法问题,只需要维护3个整型数组分别为乘数,被乘数,积。要通过可不是那么容易。需要考虑的问题有:
1.大数的幂每次需要记录前一次运算的结果并将结果保存乘数里面,但积数组需要清0。
2.笔者的解题思路是先计算整数的大数乘幂,但在此之前记录小数点的位置,最后输出的时候准确定位小数点即可(这点非常麻烦)。
3.题目要求清除前后导0,所以对于10.000 1 10.000 2这样的数据需要注意。
4.对于纯小数的幂注意输出格式。
5.任何数的1次方为其本身,题目没有考虑数的0次方为1。
代码如下:
<pre name="code" class="cpp">/*
arthur: Near_zh
data: 2014/7/30
note: poj-1001
*/
#include <iostream>
#include <string>
using namespace std;
int result[99999], a[99999], b[99999];
int main()
{
string str;
int n;
int i=0;
int j;
int lena;
int lenb;
int dot;//小数点
int num;
int count;
while(cin>>str>>n)
{
if(n>1)
{
lenb=lena=5;
memset(result, 0, sizeof(result));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
num=n;
n--;
count=0;
for(i=lena,j&