<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一個(gè)簡單問題的巨牛解法方案

    我們公司的老總心血來潮,給大家出了一道編程題,想測試一下大家的編程能力。 
    編寫Java程序求7進(jìn)制數(shù)1234560654321的10進(jìn)制結(jié)果,要求:盡最大可能減少代碼量、內(nèi)存占用量和計(jì)算量。

    我突發(fā)奇想,為了減少代碼量,我用了Math類的pow方法,代碼如下:

    double sum=0;
            
    for(int i=0;i<6;i++)
            {
              sum
    += (i+1*(Math.pow(7,12- i)+Math.pow(7, i));
              
             }
            System.out.println(
    "用了Math函數(shù):"+sum);

    我把程序給老總看,老總看后,在題目的要求中加上了一條:不允許用Math 類,我暈!
    他說要測試我的基礎(chǔ)編程能力。
    于是我將程序改成:

    double sum = 0;
            
    double a = 1;
            
    int i=0;
            
    int j=0;
            
    double temp=0;

            
    for (i = 0; i < 6; i++)
            {
                a 
    = 1;
                temp
    =0;
                
    for (j = 0; j < 12 - i; j++)
                {
                    a 
    *= 7;
                }
                temp 
    += a;
                a 
    = 1;

                
    for (j = 0; j < i; j++)
                {
                    a 
    *= 7;
                }
                
                temp 
    += a;
                temp 
    *= (i + 1);
                sum
    +=temp;
                
            }
            System.out.println(
    "用了78次乘法:"+sum);

    老總認(rèn)為我的乘法執(zhí)行次數(shù)過多。
    我再次修改程序:

    double a = 1;
            
    int i=0;
            
    int j=0;
            
    double sum=0;
            
    for (i = 1; i <=6; i++)
            {
                a 
    = 1;
                
    for (j = 1; j <=6- i; j++)
                {
                    a 
    *= 7;
                    
                }
                sum
    +=i*a;
                
            }
            sum
    *=7*7*7*7*7*7*7;
            
    for (i = 1; i <=6; i++)
            {
                a 
    = 1;

                
    for (j = 1; j <= i-1; j++)
                {
                    a 
    *= 7;
                }
                
                sum 
    += i*a;
                
            }
            System.out.println(
    "用了49次乘法:"+sum);

    老總看后還是不滿意,他終于出手了。下面是他的程序,
            int[] s={1,2,3,4,5,6,0,6,5,4,3,2,1};
            
    double sum=s[0];
            
    for(int k=1;k<13;k++)
            {
                sum
    =sum*7+s[k];
            }
            System.out.println(
    "用了12次乘法:"+sum);

    怎么樣?夠狠吧!只用了12次乘法,大家還有什么其他的高招嗎?如果有,請(qǐng)給我留言,不勝感激。

    posted on 2007-09-21 22:23 我為J狂 閱讀(1958) 評(píng)論(18)  編輯  收藏 所屬分類: Java算法

    評(píng)論

    # re: 一個(gè)簡單問題的巨牛解法方案。 2007-09-21 23:06 千里冰封

    呵呵,有意思  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案 2007-09-21 23:39 下雨

    真是厲害呀
    很好很不錯(cuò)GOOD
    上品

    -------------------------------------------------
    http://www.sy555.com  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案[未登錄] 2007-09-21 23:49 Javacap

    基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)問題,作Java作久了就遠(yuǎn)離了基礎(chǔ)?  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案 2007-09-22 00:40 啊光

    呵呵,表驅(qū)動(dòng)法.  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案 2007-09-22 01:24 驚鴻逝水

    你們公司的老總很閑嘛,不做運(yùn)營,管理決策嗎?  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案 2007-09-22 01:45 bean

    最后一個(gè)能算是算法嗎?把13個(gè)數(shù)字放數(shù)組里面?另外再給你個(gè)數(shù)怎么辦?還不得挨個(gè)算出來。  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案 2007-09-22 04:54 jie

    搞笑,時(shí)代變了  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案 2007-09-22 10:39 adalovelacer

    最后一個(gè)能算是算法嗎?把13個(gè)數(shù)字放數(shù)組里面?另外再給你個(gè)數(shù)怎么辦?還不得挨個(gè)算出來

    說得十分對(duì),如果這樣都算算法的的話,最快的算法是:

    sum = 1234560654321的10進(jìn)制結(jié)果;
    System.out.println("一次乘法都不用:"+sum);  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案 2007-09-22 11:32 千里冰封

    Long.parseLong("1234560654321", 7);


    這樣豈不是更簡單?
      回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案 2007-09-22 11:43 我為J狂

    @千里冰封
    你的方法確實(shí)很簡單,不過這道題考察的不是使用JavaAPI的能力,而是基礎(chǔ)編程能力,也就是說不能使用JDK中定義好的Java方法。  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案 2007-09-22 11:52 我為J狂

    @bean
    你提到的關(guān)于算法靈活性的問題很好,我將最后一個(gè)算法更改為
    static double getValue(String str)
    {
    char[] c = str.toCharArray();
    double sum = Double.parseDouble(c[0] + "");
    for (int k = 1; k < 13; k++)
    {
    sum = sum * 7 + Double.parseDouble(c[k] + "");
    }
    return sum;
    }
    System.out.println("用了12次乘法:" + getValue("1234560654321"));  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案 2007-09-22 11:54 我為J狂

    @adalovelacer
    我不太理解你的寫法,你不會(huì)是在起哄吧?  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案 2007-09-22 11:59 我為J狂

    @驚鴻逝水
    每個(gè)老總都要做運(yùn)營,管理決策,不過我們老板是做技術(shù)出身,清華碩士,他對(duì)員工要求很嚴(yán),他的員工僅僅具有編程能力是遠(yuǎn)遠(yuǎn)不夠的,他經(jīng)常會(huì)給他的員工出一些物理數(shù)學(xué)之類的問題來難為大家。  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案[未登錄] 2007-09-22 12:15 Javacap

    算法是算法,就是多項(xiàng)式運(yùn)算的算法,隨便一本數(shù)據(jù)結(jié)構(gòu)書上都應(yīng)該有。  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案[未登錄] 2007-09-27 12:50 NeedJava

    static double getValue( String value, int radix )
    {
     if( value==null||radix<0 )
      {
       return 0.00;
      }

     int length=value.length();

     double sum=(double)( value.charAt( 0 ) );

     for( int i=1; i<length; i++ )
      {
       sum=sum*radix+(double)( value.charAt( i ) );
      }

     return sum;
    }

    System.out.println( "用了12次乘法:"+getValue( "1234560654321", 7 ) );

    Double.parseDouble( c[k]+"" )非常愚蠢,難道LZ不覺得?其實(shí)就是強(qiáng)行轉(zhuǎn)換,

    沒必要toCharArray,建議LZ還是看看Java的源代碼再考慮算法吧!如果你能虛心的接受我的建議。  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案[未登錄] 2007-09-27 12:56 NeedJava

    我覺得一個(gè)好的管理者,不僅要給員工以激勵(lì),更要加強(qiáng)培養(yǎng)員工的綜合素質(zhì)(比如口才,交際能力,經(jīng)濟(jì)知識(shí)),而不是專于某些算法,畢竟不是研究院!我們得知道,如果我們到了一定年齡,不能花更多精力編程了,我們?cè)撊绾无D(zhuǎn)型!  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案 2007-10-03 20:25 我為J狂

    @NeedJava
    人外有人,天外有天,我一定虛心向您學(xué)習(xí)。  回復(fù)  更多評(píng)論   

    # re: 一個(gè)簡單問題的巨牛解法方案[未登錄] 2013-11-25 09:34 HP

    DOOD  回復(fù)  更多評(píng)論   

    <2007年9月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(11)

    隨筆分類(48)

    文章分類(29)

    常去逛逛

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲无线码一区二区三区| 国产免费区在线观看十分钟 | 中文字幕中韩乱码亚洲大片| 久草免费在线观看视频| 在线观看免费视频网站色| 亚洲日韩一区二区一无码| 久久精品亚洲日本佐佐木明希| 四虎永久免费地址在线网站| 无码av免费毛片一区二区| a级毛片毛片免费观看永久| 色婷婷综合缴情综免费观看| 亚洲午夜无码久久久久小说| 亚洲国产成人91精品| 亚洲av无码国产精品色午夜字幕| 亚洲?V乱码久久精品蜜桃| 免费的一级片网站| 歪歪漫画在线观看官网免费阅读 | 亚洲香蕉成人AV网站在线观看 | 亚洲av无码片vr一区二区三区 | 永久免费av无码不卡在线观看| 亚洲免费人成在线视频观看| 本道天堂成在人线av无码免费| 精品久久亚洲一级α| 亚洲人成无码网站在线观看| 99久久国产亚洲综合精品| 亚洲日本香蕉视频| 一区二区三区亚洲| 午夜亚洲www湿好大| 亚洲AV永久无码区成人网站| 亚洲午夜久久久久久久久电影网 | 亚洲资源最新版在线观看| 亚洲婷婷天堂在线综合| 亚洲熟妇色自偷自拍另类| 亚洲日韩中文字幕| 亚洲精品国产国语| 亚洲JIZZJIZZ妇女| 国产精品亚洲专一区二区三区| 男女猛烈xx00免费视频试看| 日本亚洲高清乱码中文在线观看| 国产亚洲精品仙踪林在线播放| 国产大陆亚洲精品国产|