【귀속】2의 멱차방, 변태 계단 뛰기, 소 직사각형 덮개

2810 단어 소그물

제목 설명


    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.

예제 1

입력


복사
1315

출력


복사
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int Simple(int n,int i) {     return (n>>i)&1; } void print(int n) {     bool first=true;     for(int i=15;i>=0;i--)     {         if(Simple(n, i))         {             if(!first)             {                 printf("+");             }             else                 first=false;             if(!i)             {                 printf("2(0)");             }             else if(i==1)             {                 printf("2");             }             else             {                 printf("2(");                 print(i);                 printf(")");             }         }     } } int main(){     int n;     scanf("%d",&n);     print(n);     cout< }
 

제목 설명


개구리 한 마리가 한 번에 1계단을 올라갈 수도 있고 2계단을 올라갈 수도 있고...그것도 n계단을 올라갈 수 있다.이 개구리가 n급의 계단을 뛰어오르는 데는 모두 몇 가지 방법이 있는지 구해라.
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;//위의 제목에 따르면 개구리는 1 또는 2만 뛰면 피보나치 문제,/즉 a[n]=a[n-1]+a[n-2], 그러면 1, 2, 3단계를 뛸 수 있을 때 a[n]=a[n-1]+a[n-2]+a[n-3],...//순서대로 유추하여 본 문제를 내놓을 수 있는 a[n]=a[n-1]+a[n-2]+...+a[1];이로써 코드를 얻을 수 있습니다: int jumpFloor(int number) {int a[10001];a[0]=1;a[1]=1;a[2]=2;for(int i=3;i<10001;i+)a[i]=2*a[i-1];return a[number];}
int main() {     printf("%d",jumpFloor(4)); }
 

제목 설명


우리는 2*1의 작은 직사각형으로 가로나 세로로 더 큰 직사각형을 덮을 수 있다.실례지만 n개의 2*1의 작은 사각형으로 중첩 없이 2*n의 큰 사각형을 덮는 방법은 모두 몇 가지가 있습니까?(가장 멍청한 방법: 가난한 짓)
class Solution { public:    int rectCover(int number) {     int a[10001];     a[1]=1;     a[2]=2;     for(int i=3;i<10001;i++)     {        a[i]=a[i-1]+a[i-2];     }     return a[number]; } };

좋은 웹페이지 즐겨찾기