日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8758:2的幂次方表示

發布時間:2024/4/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8758:2的幂次方表示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

8758:2的冪次方表示

  • 查看
  • 提交
  • 統計
  • 提問
總時間限制:?
1000ms
內存限制:?
65536kB
描述

任何一個正整數都可以用2的冪次方表示。例如:

????137=27+23+20

同時約定方次用括號來表示,即ab可表示為a(b)。由此可知,137可表示為:

????2(7)+2(3)+2(0)

進一步:7=22+2+20(21用2表示)

????????3=2+20

所以最后137可表示為:

????2(2(2)+2+2(0))+2(2+2(0))+2(0)

又如:

????1315=210+28+25+2+1

所以1315最后可表示為:

????2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

輸入
一個正整數n(n≤20000)。
輸出
一行,符合約定的n的0,2表示(在表示中不能有空格)。
樣例輸入
137
樣例輸出
2(2(2)+2+2(0))+2(2+2(0))+2(0)
來源
NOIP1998復賽 普及組 第一題
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<cmath> 5 void work(int n) 6 { 7 if(n==1) 8 { 9 printf("2(0)"); 10 return; 11 }//初始判斷條件,如果n為1或2則直接輸出 12 else if(n==2) 13 { 14 printf("2");// 2的一次方 15 return; 16 } 17 else 18 { 19 int j=1,i=0;//j每次乘2,如果大于了n就分解結束, 20 //i為當前次數(指數) 21 do 22 { 23 j=2*j; 24 if(j>n) 25 { 26 j/=2;//回退到當j<n時 27 if(i==1)//這步非常重要,確定是否需要繼續 2() 28 printf("2"); 29 else 30 { 31 printf("2("); 32 work(i); 33 printf(")"); 34 } 35 if(n-j!=0) 36 { //如果n分解之后還有剩余的數,那么繼續分解 37 printf("+"); 38 work(n-j); 39 } 40 return; 41 } 42 else 43 i++; 44 } while(1); 45 } 46 } 47 int main() 48 { 49 int n; 50 scanf("%d",&n); 51 work(n); 52 } 點擊此處看答案

?

轉載于:https://www.cnblogs.com/zwfymqz/p/6542776.html

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的8758:2的幂次方表示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。