二的冪次方判定與
阿新 • • 發佈:2021-02-18
哈 勤勞的博主又來了
今天干什麼呢?二次元的冪次方吧
任何一個正整數都可以用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;
}
本期內容就到這裡了 有什麼不懂的可以評論問我 歡迎各位
碼字不易 多多點贊噢
。。。