POJ 1001 题解

题目大意是求一个实数R的N次方,此题第一次想到用快速幂做,后来发现快速幂只适用于整数计算,就没有采用。此题的突破点在于题目中给的R是一个固定长度的字符串,这就提示我们R可以看做字符串,读入以后提取小数点,并转化为一个整数计算,完成后的结果可以再用记录下的小数长度确定小数点的位置。

那么,输入的问题解决了,后来在写快速幂的时候发现最终的数据过大,没有办法用64位整数存储。就以为是高精快速幂。后来观察数据,发现指数数据范围较小,可以用高精度乘法解决这个问题。于是最终确定为使用高精乘解决这个问题。

#include<iostream>
#include<string>
using namespace std;
int a[101]={},b[101]={},c[101]={};
int la,lb,lc;
void deal_s(string s);
int main()
{
	string s;
	int p;
	while(cin>>s>>p)
	{
		deal_s(s);
	}
	for(int i=1;i<=len;i++)
	{
		cout<<
}
void deal_s(string s)
{
	int l=0,r=s.length()-1;
	if(s[0]==‘0‘)
	{
		l=1;
	}
	bool che=false;
	for(int i=0;i<s.length();i++)
	{
		if(s[i]==‘.‘)
		{
			che=true;
			break;
		}
	}
	if(che)
	{
		while(s[r]==‘0‘)
		{
			r--;
		}
	}
	int len=r-l;
	int j=1;
	for(int i=l;i<=r;i++)
	{
		if(s[i]==‘.‘)
		{
			continue;
		}
		b[len-j+1]=(int)s[i]-48;
		j++;
	}
	lb=len;
	return;
}
时间: 2024-12-10 10:11:06

POJ 1001 题解的相关文章

POJ 1001 Exponentiation 无限大数的指数乘法 题解

POJ做的非常好,本题就是要求一个无限位大的指数乘法结果. 要求基础:无限大数位相乘 额外要求:处理特殊情况的能力 -- 关键是考这个能力了. 所以本题的用例特别重要,再聪明的人也会疏忽某些用例的. 本题对程序健壮性的考查到达了变态级别了. 某人贴出的測试用例数据地址: http://poj.org/showmessage?message_id=76017 有了这些用例,几下调试就过了. 我关键漏了的用例: 000.10  1 000000  1 000.00  1 .00000  0 0000

POJ 1001 Exponentiation(JAVA,BigDecimal-&gt;String)

题目 计算实数a的n次方,具体输出格式看案例 import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); BigDecimal a = BigDecimal.ONE; BigDecimal ans = BigDecimal.ONE; int n; while(in.hasNextBi

POJ 1001 高精度

链接: http://poj.org/problem?id=1001 题意: 计算小数的幂,高精度 题解: 第一次用java ac,^-^ 代码: 1 import java.util.*; 2 import java.math.*; 3 4 public class Main { 5 public static void main(String args[]) { 6 Scanner cin = new Scanner(System.in); 7 while (cin.hasNext()) {

solution for POJ 1001

http://poj.org/problem?id=1001 POJ的前几道题理解起来很简单,算法也不复杂,只是需要花很长的时间去调试.1001本质上就是一个大数运算的问题,大数乘法的问题可以采用分治法,具体参考这篇文章:http://blog.csdn.net/tjsinor2008/article/details/5625849.代码如下: 1 #include<stdio.h> 2 #include<memory.h> 3 4 unsigned char a[200],b[2

POJ 1001 Exponentiation(大数幂,还是Java大发好!需调用多个方法)

Exponentiation Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 156303   Accepted: 38063 Description Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the n

BZOJ 1001 题解

1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 18876  Solved: 4649[Submit][Status][Discuss] Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: 左上角点为(1,1),右下角点为(N,M)(上图中N=4,M=

poj - 3641 题解

题意:检验一个数是否是质数,且满足ap = a (mod p) 题解:快速幂,质数检验 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 using namespace std; 6 long long power(long long a,long long b,long long c) 7 { 8 long long res,t; 9 res=

poj - 3070 题解

题意:斐波那契数列的矩阵链乘求法. 题解:快速幂优化矩阵链乘解决. 1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<cstring> 5 using namespace std; 6 struct datatype 7 { 8 int a[2][2]; 9 }; 10 datatype multiple(datatype x,datatype y) 11 { 1

poj - 1700 题解

大概题意:N个人要过河,一个船最多承载两人,且过河速度等于船上划船速度最慢的人的速度,求过河的最短时间. 题目解法:首先对题目进行分析,可以发现:船过了河还要有一个人再把船送回来. 假设把人按过河速度从大到小排序并编号1-4,则会发现有两种过河方式:1.13一组,1回来,24一组,2回来,12一组,完成:2.12一组,1回来,13一组,1回来,14一组,完成. 因此贪心策略就是:把人按过河速度从大到小排序,然后按上述方式过河,每次选取最优方式. 代码如下: 1 #include<iostream