http://lx.lanqiao.org/problem.page?gpid=T235
Algorithm Training 2 recurses represents a time limit: 1.0s memory limit: 512.0MBThe problem describes that any positive integer can be represented by a 2 binary, for example: 137 of the 2 binary is represented as 10001001.
The 2 notation is written in the form of the sum of the power of 2, and the second power is preceded by the following expression: 137=2^7+2^3+2^0
The Covenant power is now represented by parentheses, which means that a^b is represented as a (b)
At this point, 137 can be represented as: 2 (7) +2 (3) +2 (0)
Further: 7=2^2+2+2^0 (2^1 with 2)
3=2+2^0
So the last 137 can be represented as: 2 (2 (2) +2+2 (0)) +2 (+ 0) +2 (0)
Another example: 1315=2^10+2^8+2^5+2+1
So the last 1315 can be expressed as:
2 (2 (+ 0) +2) +2 (2 (+ + (0))) +2 (2 (2) +2 (0)) +2+2 (0) The input format positive integer (1<=n<=20000) output format conforms to the contract N of 0, 2 = (no spaces in the representation) sample input 137 sample Output 2 (2 (2) +2+2 (0)) +2 (0) +2 Example input 1315 sample output 2 (2 (+2 (0)) +2) 2 (0 (+ +2) 2 (2)) +2+2 (0)
Tips
Recursive implementation will be relatively simple, you can output the AC code on the side of recursion:
1#include <stdio.h>2 voidJudgeintN)3 {4 intnum =0, i =0, K, a[ +];5 while(n)6 {7 if(n%2)8A[num + +] =i;9i + +;TenN/=2; One } A for(i = num-1; I >=0; I--) - { - if(A[i] = =0) theprintf"2 (0)"); - Else if(A[i] = =1) -printf"2"); - Else if(A[i] = =2) +printf"2 (2)"); - Else + { Aprintf"2 ("); at judge (A[i]); -printf")"); - } - if(i) -printf"+"); - } in } - intMain () to { + intN; - while(~SCANF ("%d",&N)) the { * judge (n); $Puts"");Panax Notoginseng } - return 0; the}
View Code
The recurses representation of algorithm training 2