1. 程式人生 > 其它 >二的冪次方判定與

二的冪次方判定與

技術標籤:c語言簡單程式碼c語言

哈 勤勞的博主又來了
今天干什麼呢?二次元的冪次方吧
任何一個正整數都可以用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表示。(在表示中不能有空格)

樣例輸入 Copy
137
樣例輸出 Copy
2(2(2)+2+2(0))+2(2+2(0))+2(0)

//核心思想:利用log函式計算最大次方,利用pow函式計算剩餘數,
//然後繼續判斷  如果大於2就繼續進入函式然後繼續判斷
//同樣注意好格式問題,要不然容易判錯
#include<stdio.h>
#include<math.h>
kkk(int n) //函式呼叫
{
	int x=2,y,s;
    y=log(n)/log
(2);//取出最大數次方 if(y>2) { printf("2(");//如果大於2繼續進入函式 kkk(y); printf(")"); } else if(y==1) { printf("2"); //特殊情況 } else { printf("2(%d)",y); } s=n-pow(2,y);//算餘數 if(s>0) { printf("+");//列印格式繼續進入函式 kkk(s); } } int main()//主函式
{ int n; int m; scanf("%d",&n); kkk(n); return 0; }

本期內容就到這裡了 有什麼不懂的可以評論問我 歡迎各位
碼字不易 多多點贊噢
。。。在這裡插入圖片描述