1 条题解

  • 0
    @ 2021-6-15 12:50:57

    C++ :

    #include<iostream>
    #include<iomanip>
    using namespace std;
    int A[25]; //用于保存选了哪些元素
    int n,amount;
    void Print(int len){
        for(int i=len-1;i>=0;i--) cout<<A[i]<<' ';
        cout<<endl;
    }
    void Generate(int i, int m){ //i为当前最前的数字,m为数字串的长度
        //不作任何处理;
        amount++; //Print(m);
        //加数
        for(int a=1;a<=i/2;a++){
            A[m]=a;
            Generate(a,m+1);
        }
    }
    int main(){
        while(true){
        cin>>n; if(n==0) break;
        A[0]=n; amount=0;
        Generate(n,1);
        cout<<amount<<endl;
        }
        return 0;
    }
    
    

    Pascal :

    var
    a:array[1..1000] of longint;
    s,i,j,n,top:longint;
    begin
      readln(n);
      while n<>0 do
      begin
      a[1]:=n;
      inc(s);
      top:=1;
      if n>1 then
      repeat
      while a[top]>1 do
       begin
        inc(top);
        a[top]:=a[top-1] div 2;
        inc(s);
        end;
        if top>2 then
        begin
        dec(top);
        dec(a[top]);
        a[top+1]:=0;
        inc(s);
        end;
       until (a[2]=1) ;
     writeln(s);
     s:=0;
     readln(n);
     end;
    end.
    
    
    • 1

    信息

    ID
    469
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者