1 solutions

  • 0
    @ 2025-11-5 17:23:04

    C :

    #include <stdio.h>
    #include <string.h>
    int main()
    	{
     //freopen("inin.txt","r",stdin);
     //freopen("out.out","w",stdout);
     int n;
     int a,b,i,j;
     int arr[20][20];
    
     while(scanf("%d",&n)!=EOF)
     {
     	while(n--)
     	{
      scanf("%d%d",&a,&b);
      for(i=0;i<=a;i++)
      { arr[i][0]=1;
       arr[i][1]=1;
      }
      for(i=0;i<=b;i++)
      { arr[0][i]=1;
       arr[1][i]=1;
      }
      for(i=2;i<=a;i++)
       for(j=2;j<=b;j++)
        if(i>=j)
         arr[i][j]=arr[i][j-1]+arr[i-j][j];
        else
         arr[i][j]=arr[i][i];
      printf("%d\n",arr[a][b]);
      memset(arr,0,sizeof(arr));
     	}
     }
     return 0;
    }
    
     
    
    
    
    int f(int m, int n)
    
    {
    
           if( m == 0 || n == 1) return 1;  
    
           if(m<n) return f(m ,m);
    
           return f(m,n-1) + f(m-n , n);
    
    }
    

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
    	
    	//freopen("F:\\TestFiles\\test.in","r",stdin);
    	//freopen("F:\\TestFiles\\test2.out","w",stdout);
    	int d[105][105];
    	memset(d,0,sizeof(d));
    	
    	for(int j=0;j<=100;j++){
    		d[0][j]=1;
    		d[1][j]=1;
    	}
    	
    	for (int i=2;i<=100;i++){
    		for (int j=1;j<=100;j++){
    			if (j>i) d[i][j]=d[i][i];
    			else d[i][j]=d[i][j-1]+d[i-j][j];
    		}
    	}
    	
    	
    	int t;
    	while(~scanf("%d",&t)){
    		while(t--){
    			int n,m;
    			scanf("%d%d",&n,&m);
    			printf("%d\n",d[n][m]);
    		}
    	}
    	return 0;
    }
    
    • 1

    Information

    ID
    18369
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By