uva-465(overflow)

这道题很奇葩啊,WA了4发。。。妈的,用c++也不至于,输出竟然要原样输出。。。

例如:

  0000000000000000006 * 000000000000001

  输出是 0000000000000000006 * 000000000000001

  而不是 6 * 1

import java.io.*;
import java.util.*;
import java.math.*;

public class Overflow {
    public static void main(String[] args){
        Scanner sc = new Scanner(new BufferedInputStream(System.in));
        BigDecimal bd1, bd2, bd3, ans;
        String st1;
        bd3 = new BigDecimal("2147483647");   ///int 4位  -2147483648 ~ 2147483647 既 0x7ffffff
        while(sc.hasNextLine()){
            st1 = new String(sc.nextLine());
            System.out.println(st1);          ///原样输出。。。
            String[] str= st1.split("[\\+\\*]"); ///正则表达式,明天再写  split() 字符串分割方法

            int i = 0, len = st1.length();
            boolean flag = false;
            while(i < len){
                if((st1.charAt(i)) == ‘+‘){  //String类中用于获取每一个字符的方法
                    flag = true;
                }
                i++;
            }
            bd1 = new BigDecimal(str[0].trim());  ///trim()方法,用于清空空格
            bd2 = new BigDecimal(str[1].trim());
            if(flag == true){
                ans = bd1.add(bd2);
            }else{
                ans = bd1.multiply(bd2);
            }

            if(bd1.compareTo(bd3) > 0){                       ///compareTo()方法,用于比较两个对象间的大小, 返回 大于0 相当于  bd1 > bd3
                System.out.println("first number too big");
            }
            if(bd2.compareTo(bd3) > 0){
                System.out.println("second number too big");
            }
            if(ans.compareTo(bd3) > 0){
                System.out.println("result too big");
            }
        }
        sc.close();                            ///关闭流,只是养成好习惯吧。。。  
    }
}
时间: 2024-10-14 19:06:51

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

uva 465 Overflow 还是高精度。。。

通过这道题,我学会了一个函数atof:把字符串转换为double类型,头文件:stdlib.h 还知道了double类型可以表示的范围:-1.79E+308 ~ +1.79E+308,float类型表示的范围:-3.40E+38 ~ +3.40E+38,原因是因为他们的存储方式不一样,而且是扩大了表示范围从而牺牲了精度,这种知识点我就不深究 了,这道题需要注意前导0的问题,然后比较一下就可以了,每天学点新知识挺爽的,我目前目标一天一道白书的题 目,没空做了第二天补过来 代码: #include<

Overflow UVA 465 方法二求纠错

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

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

高精度题目列表

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 465-- Overflow (atof 函数)

 Overflow  Write a program that reads an expression consisting of two non-negative integer and an operator. Determine if either integer or the result of the expression is too large to be represented as a ``normal'' signed integer (type integer if you

UVa 10562 Undraw the Trees 看图写树

转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 题目大意: 题目传送门:UVa 10562Undraw the Trees 给定字符拼成的树,将这些树转换成特定的括号表示的树 思路: 首先,观察样例,可以发现就是先序遍历的顺序,因此可以确定dfs 但是,还有几个地方需要考虑: 同一级的结点,在同一级的括号中 由于顺序满足先序遍历,因此不需要存储树,更不需要构建树,直接在遍历过程中输出即可. 空树:即输入为:# 时的树的处理,我不建议在此进行

UVA 357 Let Me Count The Ways

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=5&page=show_problem&problem=293 Dynamic programming 注意overflow. 代码如下: 1 //============================================================================ 2 //

【UVa】Palindromic Subsequence(dp+字典序)

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=465&page=show_problem&problem=2399 最长的很简单,将串翻转过来后求两个串的lcs就是答案.. 主要是字典序那里... 还是开string来比较吧.. 注意最后输出方案时用前半段推出后半段.(因为可能lcs时会重合...) #include <cstdio> #include