洛谷 P1010 冪次方

2021-09-03 00:04:38 字數 1046 閱讀 4879

前言:只為轉c++刷水題.

題目描述

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

137=2^7+2^3+2^0

同時約定方次用括號來表示,即a^b 可表示為a(b)。

由此可知,137可表示為:2(7)+2(3)+2(0)

進一步:7= 2^2+2+2^0 (2^1用2表示)

3=2+2^0

所以最後137可表示為:

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

又如: 1315=2^10 +2^8 +2^5 +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表示(在表示中不能有空格)
題解:

用乙個遞迴為mi,找到n-2^i最小,判斷:

i==0: printf("2(0)");

i==1: printf("2");

i==2: printf("2(2)");

如果i>2,則呼叫遞迴:mi(i)

上面做完後,判斷n-2^i是否為0,不為0則呼叫遞迴:mi(n-2^i)

**:

#include 

#include

#include

using

namespace

std;

long n;

int mi(int m)

if (i==0) printf("2(0)");

if (i==1) printf("2");

if (i==2) printf("2(2)");

if (i>2)

if (m-t>0)

}int main()

洛谷 P1010 冪次方

前言 只為轉c 刷水題.題目描述 任何乙個正整數都可以用2的冪次方表示。例如 137 2 7 2 3 2 0 同時約定方次用括號來表示,即a b 可表示為a b 由此可知,137可表示為 2 7 2 3 2 0 進一步 7 2 2 2 2 0 2 1用2表示 3 2 2 0 所以最後137可表示為 ...

洛谷 P1010 冪次方

任何乙個正整數都可以用 22 的冪次方表示。例如 137 2 7 2 3 2 0137 27 23 20。同時約定方次用括號來表示,即 a bab 可表示為 a b a b 由此可知,137137 可表示為 2 7 2 3 2 0 2 7 2 3 2 0 進一步 7 2 2 2 2 07 22 2 ...

洛谷 P1010 冪次方

p1010 冪次方 includeusing namespace std int ans2 15 ans2 i 2 i int ans1 50001 如ans1 i k,則表示2 k 1 i void work int a if b 1 如果是2的超過1次方,則還可以再分,因此輸出2 後將b進行遞迴...