新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     >>计算机科学论坛<<     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 研友的交流园地,讨论关于计算机考研的方方面面。
    [返回] 计算机科学论坛计算机理论与工程『 计算机考研交流 』 → 一个这样简单的程序还是老通不过,晕哪 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 11685 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 一个这样简单的程序还是老通不过,晕哪 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     kaogejj 帅哥哟,离线,有人找我吗?
      
      
      威望:1
      等级:大二期末(C++考了100分!)
      文章:91
      积分:498
      门派:XML.ORG.CN
      注册:2008/9/24

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给kaogejj发送一个短消息 把kaogejj加入好友 查看kaogejj的个人资料 搜索kaogejj在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看kaogejj的博客楼主
    发贴心情 一个这样简单的程序还是老通不过,晕哪

    问题:
    http://acm.pku.edu.cn/JudgeOnline/problem?id=1001
    Description

    Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the national debt is a taxing experience for many computer systems.

    This problem requires that you write a program to compute the exact value of Rn where R is a real number ( 0.0 < R < 99.999 ) and n is an integer such that 0 < n <= 25.
    Input

    The input will consist of a set of pairs of values for R and n. The R value will occupy columns 1 through 6, and the n value will be in columns 8 and 9.
    Output

    The output will consist of one line for each line of input giving the exact value of R^n. Leading zeros should be suppressed in the output. Insignificant trailing zeros must not be printed. Don't print the decimal point if the result is an integer.
    Sample Input

    95.123 12
    0.4321 20
    5.1234 15
    6.7592  9
    98.999 10
    1.0100 12

    Sample Output

    548815620517731830194541.899025343415715973535967221869852721
    .00000005148554641076956121994511276767154838481760200726351203835429763013462401
    43992025569.928573701266488041146654993318703707511666295476720493953024
    29448126.764121021618164430206909037173276672
    90429072743629540498.107596019456651774561044010001
    1.126825030131969720661201
    Hint

    If you don't know how to determine wheather encounted the end of input:
    s is a string and n is an integer

    My Java Code:

    import java.util.Scanner;
    import java.math.BigDecimal;

    public class Main {
     public static void main(String[] args) throws Exception {
      BigDecimal r;
      int n;
      String result;

      Scanner console = new Scanner(System.in);
      while (console.hasNext()) {
       r = console.nextBigDecimal();
       n = console.nextInt();
       result = r.pow(n).toPlainString();
       if(result.length() > 1){
        result = result.replaceAll("^0", "");
       }
       if (result.indexOf('.') > 0) {
        result = result.replaceAll("0+$", "");
       }
       System.out.println(result);
      }
      console.close();
     }
    }

    用我的程序运行Sample 输入的输出:
    95.123 12
    0.4321 20
    5.1234 15
    6.7592  9
    98.999 10
    1.0100 12
    548815620517731830194541.899025343415715973535967221869852721
    .00000005148554641076956121994511276767154838481760200726351203835429763013462401
    43992025569.928573701266488041146654993318703707511666295476720493953024
    29448126.764121021618164430206909037173276672
    90429072743629540498.107596019456651774561044010001
    1.126825030131969720661201

    可是提交上去报 Wrong Answer.
    不知道错在哪。。。


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/8 22:33:00
     
     alis1017 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:4
      积分:65
      门派:XML.ORG.CN
      注册:2009/3/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给alis1017发送一个短消息 把alis1017加入好友 查看alis1017的个人资料 搜索alis1017在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看alis1017的博客2
    发贴心情 
    我也遇到了,求解
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/9 10:31:00
     
     dq85 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(C++考了100分!)
      文章:52
      积分:345
      门派:XML.ORG.CN
      注册:2008/3/22

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给dq85发送一个短消息 把dq85加入好友 查看dq85的个人资料 搜索dq85在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看dq85的博客3
    发贴心情 
    不懂java
    不过我看上面写的Java is J2SE 1.5,会不会不兼容。。。呵呵
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/9 11:53:00
     
     whasic 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(汇编考了97分!)
      文章:53
      积分:385
      门派:IEEE.ORG.CN
      注册:2008/9/3

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给whasic发送一个短消息 把whasic加入好友 查看whasic的个人资料 搜索whasic在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看whasic的博客4
    发贴心情 
    这个题的问题多了
    少小看1001了
    出了名的无限WA
    不看你程序光看你结果是WA就知道你至少犯了其中一个
    首部0处理没?
    尾部0处理没?
    小数点处理没?
    整数输出小数点没?
    10的整数倍的若干次幂的尾部0是不是被当成小数处理了?
    ……

    略微看了一下你的程序
    用math.BigDecimal 你也太偷懒了吧……

    ----------------------------------------------
    再见,国立交通大学。 你好,国立北京大学

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/9 12:16:00
     
     mychangle1234 帅哥哟,离线,有人找我吗?处女座1987-9-9
      
      
      等级:大二期末(C++考了100分!)
      文章:59
      积分:345
      门派:IEEE.ORG.CN
      注册:2008/3/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给mychangle1234发送一个短消息 把mychangle1234加入好友 查看mychangle1234的个人资料 搜索mychangle1234在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看mychangle1234的博客5
    发贴心情 
    看法同楼上,这种大数乘法可以用数组解决,在《程序设计导引及在线实践》里面有例子。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/9 13:40:00
     
     greatseven 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:2
      积分:62
      门派:XML.ORG.CN
      注册:2008/6/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给greatseven发送一个短消息 把greatseven加入好友 查看greatseven的个人资料 搜索greatseven在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看greatseven的博客6
    发贴心情 
    如果你一定要用java的话,那么还应该用BigDecimal的stripTrailingZeros,如果是0开头的话用startsWith("0.")判断一下再用substring输出就行了
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/9 17:19:00
     
     dark_matter 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:94
      门派:XML.ORG.CN
      注册:2009/3/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给dark_matter发送一个短消息 把dark_matter加入好友 查看dark_matter的个人资料 搜索dark_matter在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看dark_matter的博客7
    发贴心情 
    很久以前写的,OJ上的Archive下载不下来,刚在电脑上找出来一份,不知道是不是最后AC的版本:
    import java.util.*;
    import java.lang.*;
    import java.math.*;

    public class Main {

        public static void main(String[] args)
        {
            Scanner cin = new Scanner(System.in);
            
            while (cin.hasNext())
            {
                BigDecimal  num;
                int         exp;
                String      res;

                num = BigDecimal.valueOf(Double.parseDouble(cin.next()));
                exp = cin.nextInt();            
                res = num.pow(exp).toPlainString();
                
                if (res.startsWith("0"))
                {
                    res = res.substring(1, res.length());
                }
                
                while (res.endsWith("0"))
                {
                    res = res.substring(0, res.length() - 1);
                }
                     
                if (res.endsWith("."))
                {
                    res = res.substring(0, res.length() - 1);
                }    

                System.out.println(res);
            }
        }
    }

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/9 22:31:00
     
     kaogejj 帅哥哟,离线,有人找我吗?
      
      
      威望:1
      等级:大二期末(C++考了100分!)
      文章:91
      积分:498
      门派:XML.ORG.CN
      注册:2008/9/24

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给kaogejj发送一个短消息 把kaogejj加入好友 查看kaogejj的个人资料 搜索kaogejj在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看kaogejj的博客8
    发贴心情 
    自己看出一个问题来
    if (result.indexOf('.') > 0) {
    应该是
    if (result.indexOf('.') > -1) {

    否则0.0100^4就通不过

    头部0,尾部0,小数点都处理了,我用的是正则表达式,都可以处理的,有谁能给一个NG的case?

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/9 22:38:00
     
     kaogejj 帅哥哟,离线,有人找我吗?
      
      
      威望:1
      等级:大二期末(C++考了100分!)
      文章:91
      积分:498
      门派:XML.ORG.CN
      注册:2008/9/24

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给kaogejj发送一个短消息 把kaogejj加入好友 查看kaogejj的个人资料 搜索kaogejj在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看kaogejj的博客9
    发贴心情 
    ACM上你可查看自己的代码啊

    以下是引用dark_matter在2009-3-9 22:31:00的发言:
    很久以前写的,OJ上的Archive下载不下来,刚在电脑上找出来一份,不知道是不是最后AC的版本:
    import java.util.*;
    import java.lang.*;
    import java.math.*;

    public class Main {

         public static void main(String[] args)
         {
             Scanner cin = new Scanner(System.in);
             
             while (cin.hasNext())
             {
                 BigDecimal  num;
                 int         exp;
                 String      res;

                 num = BigDecimal.valueOf(Double.parseDouble(cin.next()));
                 exp = cin.nextInt();            
                 res = num.pow(exp).toPlainString();
                 
                 if (res.startsWith("0"))
                 {
                     res = res.substring(1, res.length());
                 }
                 
                 while (res.endsWith("0"))
                 {
                     res = res.substring(0, res.length() - 1);
                 }
                      
                 if (res.endsWith("."))
                 {
                     res = res.substring(0, res.length() - 1);
                 }    

                 System.out.println(res);
             }
         }
    }


    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/9 23:00:00
     
     ccyndi 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(数据结构考了98分!)
      文章:56
      积分:431
      门派:XML.ORG.CN
      注册:2008/2/28

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给ccyndi发送一个短消息 把ccyndi加入好友 查看ccyndi的个人资料 搜索ccyndi在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看ccyndi的博客10
    发贴心情 
    支持cpp。。。
    ////////////////////////////////////////////////////////////////
    #include <iostream>
    #include <string>
    #include <vector>

    using namespace std;

    class power
    {
     friend istream&operator>>(istream&In, power&r);
    public:
     string operator()(int n);
    private:
     vector<int> s;
     int dot;
    };

    istream&operator>>(istream&In, power&r)
    {
     string tmp;
     In>>tmp;
     for(int i=0; i!=6; ++i)if(tmp[i]=='.')r.dot=6-i-1;
     r.s.clear();
     for(int i=5; i>=0; --i)if(tmp[i]!='.')r.s.push_back(tmp[i]-'0');
     return(In);
    }

    string power::operator()(int n)
    {
     vector<int>answer(n*5);
     answer[0]=1;
     for(int i=0; i!=n; ++i)
     {
      vector<int>tmp(answer);
      for(int j=0; j!=n*5; ++j)answer[j]=0;
      for(int j=0; j!=n*5; ++j)
       for(int k=0; k!=5; ++k)
        answer[j+k]+=tmp[j]*s[k];
      for(int j=1; j!=n*5; ++j)
      {
       answer[j]+=answer[j-1]/10;
       answer[j-1]%=10;
      }
     }
     string str;
     str.clear();
     for(int i=0; i!=n*5; ++i)str=(char)(answer[i]+'0')+str;
     str.insert(n*5-dot*n, 1, '.');
     while(str[0]=='0')str.erase(str.begin());
     while(str[str.size()-1]=='0')str.erase(str.end()-1);
     if(str[str.size()-1]=='.')str.erase(str.end()-1);
     return(str);
    }

    int main()
    {
     power s;
     int n;
     while(cin>>s>>n)cout<<s(n)<<endl;
    }

    ----------------------------------------------
    The history, I'm in it, making it... 一载堂前灯下鬼,明日同为北大人!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/9 23:10:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 计算机考研交流 』 的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/20 0:18:23

    本主题贴数12,分页: [1] [2]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    140.015ms