2236: Balance and Poise

來源:互聯網
上載者:User
文章目錄
  • Input:
  • Output:
  • Sample Input:
  • Sample Output:

Result

TIME Limit MEMORY Limit Run Times AC Times JUDGE
5s 8192K 307 138 Standard

 

 

工匠大師Hill打造出一個精緻的天平, 對他的徒弟Oren說:“你幫我做一些砝碼配套,為了方便攜帶,砝碼數目要盡量少”。

Oren:“好。我將按照2進位的規則打造,也就是1,2,4,8,16等等,這樣在稱量同等重量下使用的砝碼數量最少,只使用7個砝碼就可以稱量1-127的重量。”
Hill:“No, you are wrong”。
Oren:“難道還有更好的方法?2進位是最優的,這一點是可以證明的”
Hill:“如果只允許砝碼放在天平的一端,那麼你說的是對的,可是並沒有人限制我們可以在天平的兩端放置砝碼。所以可以有更好的方法。如可以設計砝碼重量為1,3,9,27,81,只用5個砝碼就可以稱量1-121”。
Oren:“原來是3進位,那怎麼稱重呢? 如100克重量?”
Hill:“在天平的左端放上重物,再放上砝碼9,右端放砝碼1, 27, 81”。
Oren:“嗯,可這是怎麼算出來的呢?”
Hill:“It’s your business”。
現在,作為Oren的朋友,請你設計一個程式來計算在這種砝碼下應如何稱量。
Input:

輸入包括多個整數,每個數n佔據一行,代表要稱重的重量。0 < n <= 1000000000。
Output:

對於每個輸入的整數,計算當此重量放置在天平左端時,應如何安排3進位的砝碼,使天平平衡。每個結果輸出一行,輸出格式如例子所示,每個數字後面一個空格,如某一側沒有砝碼,則輸出0,多個砝碼按重量升序排列。
Sample Input:

10030
Sample Output:
9 left, 1 27 81 right.0 left, 3 27 right./*
3進位數,列幾個數不難發現與該數模3的餘數有關,餘2的話,砝碼加入左端,
並且給n+1後在繼續模3,餘1的時候加入右端,餘0的時候不操作;
*/
#include <cstdio>#include <iostream>using namespace std;int main (){    int n,c[20];    c[0]=1;    for (int i=1; i<20 ; i++)    {        c[i]=c[i-1]*3;    }    while (scanf("%d",&n)!=EOF)    {        int a[20],l[20],r[20],k=0,ll=0,rr=0;//l存左端,r存右端        while (n)        {            int t=n%3;            if(t==2)             {n=(n+1)/3;l[ll++]=c[k];}//餘2時,砝碼加入左端,並且給n+1後在繼續模3            if(t==1)             {n=n/3;r[rr++]=c[k];}//餘1的時候加入右端            if(t==0)n=n/3;            k++;        }        if(!ll)printf("0 left, ");        else        {            for (int i=0 ; i<ll ; i++)             printf("%d ",l[i]);             printf("left, ");        }        if(!rr)printf("0 right./n");        else        {            for (int i=0 ; i< rr ; i++)             printf("%d ",r[i]);             printf("right./n");        }    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.