uva 465 Overflow 还是高精度。。。

通过这道题,我学会了一个函数atof:把字符串转换为double类型,头文件:stdlib.h

还知道了double类型可以表示的范围:-1.79E+308 ~ +1.79E+308,float类型表示的范围:-3.40E+38
~

+3.40E+38,原因是因为他们的存储方式不一样,而且是扩大了表示范围从而牺牲了精度,这种知识点我就不深究

了,这道题需要注意前导0的问题,然后比较一下就可以了,每天学点新知识挺爽的,我目前目标一天一道白书的题

目,没空做了第二天补过来

代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
# define INF 0x7fffffff//设置成int能表示的最大值
char a[400];
char b[400];
void solve(char c[])//处理前导0的函数
{
	int len=strlen(c);
	int i;
	for(i=0; i<len; i++)
	{
		if(c[i]!='0')
			break;
	}
	strcpy(c,c+i);
}
int main()
{
	int i,j;
	double num1,num2;
	char ch;
	while(scanf("%s %c %s",a,&ch,b)!=EOF)
	{
		printf("%s %c %s\n",a,ch,b);
		solve(a);
		solve(b);
		//puts(a);
		//puts(b);
		num1=atof(a);//转换为double类型
		num2=atof(b);
		//printf("num1=%.f\n",num1);
		//printf("num2=%.f\n",num2);
		if(num1 > INF)
			printf("first number too big\n");
		if(num2 > INF)
			printf("second number too big\n");
		if(ch=='+')
		{
			if((num1+num2) > INF)
				printf("result too big\n");
		}
		if(ch=='*')
		{
			if(num1*num2  > INF)
				printf("result too big\n");
		}
	}
	return 0;
}
时间: 2024-10-18 09:51:31

uva 465 Overflow 还是高精度。。。的相关文章

UVa 465 Overflow——WA

上次那个大数开方的高精度的题,UVa113 Power of Cryptography,直接两个double变量,然后pow(x, 1 / n)就A过去了. 怎么感觉UVa上高精度的题测试数据不给力啊... 话说回来,我写了100+行代码,WA了,后来考虑到要忽略前导0,又WA了,实在不知道哪出问题了.  Overflow  Write a program that reads an expression consisting of twonon-negative integer and an

Overflow UVA 465 方法二求纠错

注明: 本题使用了两种解法,第一种参考了网上一种非常普遍的解法,即使用atof函数将两个数字字符串转化为两个浮点数,然后直接和int的最大值比较即可.这种方法较简单,不过也是在数据较小的情况下行得通.而第二种是我自己写的一种更较为普遍的解法,其实也就是直接根据字符串进行高精度的运算而已.自己用了很多数据进行测试都没有错,可是就是AC不了,不知道为什么.希望大神指教!!! 题目: Overflow Write a program that reads an expression consistin

uva 10844 - Bloques(数论+高精度)

题目链接:uva 10844 - Bloques 题目大意:给出一个n,表示有1~n这n个数,问有多少种划分子集的方法. 解题思路:递推+高精度. 1 1 2 2 3 5 5 7 10 15 15 20 27 37 52 dp[i][j]=dp[i?1][j?1]+dp[i][j?1] dp[i][0]=dp[i?1][i?1] ans[i]=dp[i][i] 需要用到高精度,并且缩进. #include <cstdio> #include <cstring> #include &

uva 11645 - Bits(计数问题+高精度)

题目链接:uva 11645 - Bits 题目大意:给出n,问从0到n这n+1个数种,数的二进制情况下,有多少11存在. 解题思路:和uva 11038一个类型的题目,只是这道题目是对于二进制下的情况.而且高精度部分可以用两个long long数解决. #include <cstdio> #include <cstring> typedef long long ll; const int N = 100; const ll M = 1e13; ll bit (int k) { r

uva 10106 Product(高精度大数乘法)

昨天刚写了个大数加法,今天又来了个大数乘法,其实解法差不多,只不过换成了好多个大数的相加而 已,看别人的算法其实跟我的也差不多,都是这个姿势.wa了一次,竟然忘了考虑0的情况,以后交题之前,都要判 断一下边缘数据,大数据和小数据,要不就是白白被扣时间啊 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<algorithm> using namespace std; char a[

UVA - 10183 - How Many Fibs? (斐波那契 + 高精度)

题目传送:UVA - 10183 思路:高精度就可以了,因为10^100以内的斐波那契数不多,根据公式来看,估计就500多,开个1000的数组足够啦,实现的话是用的java,注意这里的斐波那契是从1开始的,我一开始是从0开始的,wa了一下 AC代码: import java.util.Scanner; import java.math.BigInteger; public class Main { public static void main(String args[]) { Scanner

高精度题目列表

JAVA大数类练手 748 - Exponentiation Uva 424 Uva 10106 Uva 465 Uva 10494 POJ 2389 POJ 2756 HDU 1715 HDU 1047 HDU 1297 HDU 1002 HDU 1316 HDU 1865 HDU 1250 HDU 1042 HDU 1753 POJ 1220 HDU 2100 Uva 10023 Uva 10069 HDU 4762 Uva 10497 Uva 10844 HDU 4873 Uva 1478

UVA题目分类

题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics 10300 - Ecological Premium 458 - The Decoder 494 - Kindergarten Counting Game 414 - Machined Surfaces 490 - Rotating Sentences 445 - Marvelous Mazes

博客园博客css样式一

样式一      1.页面定制css代码 博客背景可以在body{}中添加background:#205424 url('http://mat1.gtimg.com/www/mb/theme/qqfs/one_lhj/wrapBg.jpg') no-repeat top center fixed; 1 <style type="text/css"> 2 .Abstract 3 { 4 padding: 15px; 5 border: dotted 2px #999; 6 c