ZeroJudge - d468: 簡單求冪題(求冪系列題3) 解題心得

(function(w,d,s,l,i);w[l].push('gtm.start':
new Date().getTime(),event:'gtm.js');var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
)(window,document,'script','dataLayer','GTM-KDKMGT');
(function(d, s, id) var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/zh_TW/all.js#xfbml=1&appId=668497826514848"; fjs.parentNode.insertBefore(js, fjs); (document, 'script', 'facebook-jssdk'));






if(BAHAID)
BAHAID = BAHAID.replace(/&/g, "&")
.replace(/, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");

BAHAIDlow = BAHAID.toLowerCase();

document.write('');

document.write('

');
document.write('');
document.write('');
document.write('');
document.write('

');

//document.write('
');
document.write('
');
document.write('
');
document.write('
');
document.write('
');
document.write('
');
document.write('
');
document.write('
');


else
document.write('
');
document.write('');
document.write('
    ');
    document.write('
  • 我要登入
  • ');
    document.write('
  • 註冊
  • ');
    document.write('
  • ');
    document.write('
');
document.write('
');


document.write('
');

document.write(' ');

(function()
var cx = 'partner-pub-9012069346306566:kd3hd85io9c';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
)();

service = new rsearch('rsearch');

if( BAHAID )
NOTIFY_getnum();
run30 = setInterval("NOTIFY_getnum()",60000);


function insideSecondaryfunc(frm, evt){
if( 0










googletag.cmd.push(function()
googletag.defineSlot('/1017768/AD2018032204', [1250, 160], 'div-gpt-ad-banner').addService(googletag.pubads());

window.DFP.setTargeting();

googletag.pubads().enableSingleRequest();
googletag.enableServices();
);

googletag.cmd.push(function() googletag.display('div-gpt-ad-banner'); );
document.cookie = 'ckBahaAd=0------------------------;path=/;expires=' + new Date().toDateString() + ' 23:59:59 UTC+0800;domain=.gamer.com.tw'










breadCrumbs(122, '', 'homeuid=inversion')








    breadCrumbs_listMenu(122, 0, 'homeuid=inversion')





    創作內容





    0 GP


    ZeroJudge - d468: 簡單求冪題(求冪系列題3) 解題心得


    作者:Not In My Back Yard│2018-11-04 13:36:08│贊助:0│人氣:15

    題目連結:

    d468: 簡單求冪題(求冪系列題3)





    題目大意:

    給定兩正整數 a 、 n ( -2 ^ 63 ≦ a ^ n ≦ 2 ^ 63 - 1 ),求 a ^ n 的值。



    當 a = n = 「0」時,程式停止,並輸出「All Over.」。



    註: a 、 n 要剛好各是 1 個「0」才停止。如果像是 a = 「00」、 n = 「0」,此時要輸出「0」,而程式要繼續執行。







    範例輸入:

    6 5

    567 3

    0 012

    2 25

    0 0







    範例輸出:

    7776

    182284263

    0

    33554432

    All Over.







    解題思維:

    一開始用字串讀入兩個數字字串,判斷是否剛好都為 "0" ,如果是就停止程式。



    反之,就要把數字字串轉為一般數字。轉成數字的方法如下:



    假設字串為 "48763"  ,一開始有一個變數 X = 0,而我們要讓 X = 48763 :

    從字串最左邊開始跑,讀到 '4' ,把 X 乘以 10 ,再加上 4 。現 X = 4 。


    讀到 '8' ,把 X 乘以 10 ,再加上 8 。現 X = 48 。


    讀到 '7' ,把 X 乘以 10 ,再加上 7 。現 X = 487。


    讀到 '6' ,把 X 乘以 10 ,再加上 6 。現 X = 4876 。


    最後讀到 '3' ,把 X 乘以 10 ,再加上 3 。現 X = 48763 。

    這樣便使得 X = 48763 了。



    但是要小心字串有可能以負號('-')開頭,要預先處理。





    把字串轉成數字後,判斷是否皆為 0 ,如果是就輸出 0 。



    不然,再判斷 a 或 n 是否為 0 。如果 a 是 0 ,則輸出 0 ( 0 的任一次方為 0 );如果 n 是 0 ,則輸出 1 (任意數字的 0 次方為 1 )。



    如果皆非,再判斷 a 是否是 1 ,如果是輸出 1 ;否則判斷 a 是否等於 -1 ,如果是還要再判斷 n 的奇偶性。 n 是偶數,輸出 1 ; n 是奇數,輸出 -1 。



    排除了以上的特例之後,就可以直接運算 a ^ n 了。不過當然不能直接乘,要使用到以前提到的快速冪。先做 a ^ 2 、 a ^ 4 、 a ^ 8 等等,然後看 n 的二進位表示法,把相應次方的再乘起來。



    最後輸出即可。








    本人的程式碼(放在CodePile)


    此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。






    喜歡0
    收藏
    0
    引用
    0
    留言
    推上首頁



    檢舉








    引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4184012

    All rights reserved. 版權所有,保留一切權利





    相關創作

    同標籤作品搜尋:程式題目解題心得|字串處理|快速冪





    ZeroJudge - d408: 我要最小值 (Part 2) 解題心得




    ZeroJudge - d462、d465、d467 解題心得




    ZeroJudge - d473: 秒殺求冪題(求冪系列題4) 解題心得




    ZeroJudge - d655: 許胖公仔 解題心得




    ZeroJudge - d925: 平均高度 解題心得


    留言共 0 篇留言




    Util.ChangeText('replys', Util.ChangeText.FLAG_LAZYLOAD|Util.ChangeText.FLAG_MAX_SIZE|Util.ChangeText.FLAG_BALA_PLAYER);

    我要留言提醒:您尚未登入,請先登入再留言


    0喜歡★inversion 可決定是否刪除您的留言,請勿發表違反站規文字。



    前一篇:ZeroJudge - ...

    後一篇:ZeroJudge - ...








    egg('.MSG-list8C img').each(function(elem)
    elem.className = elem.className + ' lazyload';
    );

    egg('.gallery-image').imageGallery();

    function deleteCreation(vCode)
    var content = egg('.MSG-list8C').html();
    var pattern = /]*?>/i;
    var html = '
    確定要刪除嗎?';
    var width = '200px';
    if(content.match(pattern))
    html += '
    ';

    var boxConfig =
    'closeButton': false,
    'css':
    'width': width

    ;

    egg.mutbox(html, '訊息',
    '確定': function()
    if(egg('#chkDelTruthImage:checked').size())
    egg('[name=delTruthImage]').val('yes');


    egg.cookie.del('ckHOME_CREATION','home.gamer.com.tw','/');
    egg.cookie.set('ckHOME_CREATION',vCode,'home.gamer.com.tw','/');
    document.getElementById('frmDel').submit();
    egg.lightbox.close();
    ,
    '取消': function()
    egg.lightbox.close();

    ,boxConfig);

    var buttonOk = egg('.BH-popbtns :button:eq(0)');
    if(buttonOk.size())
    buttonOk.get(0).focus();



    resizeImage(627);

    egg('.btnGp').click(function()
    $.mutbox('請先登入才能進行此動作', '訊息', '確定':function()location.href='https://user.gamer.com.tw/login.php';);
    );







    訂閱私訊


    作品資料夾


    ZeroJudge (141)


    未分類 (0)


    vvo3817243所有巴友
    原創漫畫 盤古戮魔者已更新第六話,歡迎各位前來交流觀賞!看更多我要大聲說昨天17:30







    googletag.cmd.push(function() googletag.display('div-gpt-ad-1489070677458-0'); );



    (function(window, $)
    var $window = $(window);
    var $document = $(document);
    var $BH_slave = $("#BH-slave");
    var $BH_master = $("#BH-master");
    var $flySalve = $("#flySalve");
    var posY = $flySalve.position().top;
    var fad_style = document.getElementById("flySalve").style;
    var BH_wrapper_width = $('#BH-wrapper').width();
    var BH_topBar_height = $('.TOP-bh').height();
    $(window).on("scroll", function()
    posY = $BH_slave.height() - (fad_style.position === 'fixed' ? 0 : $flySalve.height());

    if ($document.scrollTop() > (posY + $BH_slave.offset().top - BH_topBar_height) && $BH_slave.height() < $BH_master.height())
    fad_style.position = 'fixed';
    fad_style.top = BH_topBar_height + 'px';
    if ($(window).width() < BH_wrapper_width)
    fad_style.left = (BH_wrapper_width - $BH_slave.width() - $document.scrollLeft())+'px';

    else
    fad_style.position = '';

    ).on("resize", function()
    fad_style.left = null;
    );
    )(window, jQuery);
















    face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】





    The name of the picture黑色沙漠手遊伺服器是巴雷諾斯公會缺人名稱是GO歡迎大家查詢到後加入

    This page is only for reference, If you need detailed information, please check here
    The name of the pictureThe name of the picture

    Popular posts from this blog

    京昆高速公路

    【情報】本週珍珠商品重點:煉金時裝 + 艾港勞工宿舍!!

    【攻略】陳戈-謝勒汗智慧的古書 (完成)