时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:410
解决:267
-
题目描述:
-
Every positive number can be presented by the exponential form.For example, 137 = 2^7 + 2^3 + 2^0。
Let's present a^b by the form a(b).Then 137 is presented by 2(7)+2(3)+2(0). Since 7 = 2^2 + 2 + 2^0 and 3 = 2 + 2^0 , 137 is finally presented by 2(2(2)+2 +2(0))+2(2+2(0))+2(0).
Given a positive number n,your task is to present n with the exponential form which only contains the digits 0 and 2.
-
输入:
-
For each case, the input file contains a positive integer n (n<=20000).
-
输出:
-
For each case, you should output the exponential form of n an a single line.Note that,there should not be any additional white spaces in the line.
-
样例输入:
-
1315
-
样例输出:
-
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
-
答疑:
- 解题遇到问题?分享解题心得?讨论本题请访问: http://t.jobdu.com/thread-7818-1-1.html
代码清单~
#include <stdio.h>
void foo(short int n){
int flag=0;
for(int i=15; i>=0; i--){
if(!((n>>i)&1)) continue;
if(flag==1) printf("+");
switch(i){
case 0: printf("2(0)");break;
case 1: printf("2");break;
case 2: printf("2(2)");break;}
if(i>2){
printf("2(");
foo(i);
printf(")");}
flag=1;}}
int main(){
short int input;
while(~scanf("%d",&input)){
foo(input);
printf("\n");}
return 0;}
/**************************************************************
Problem: 1095
User: denallo
Language: C
Result: Accepted
Time:10 ms
Memory:904 kb
****************************************************************/