64,654
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
static int sum;
int count1(double M,double N)
{ //int sum=0;
if(N==1)
{ sum=1;
return sum; }
else if(N==2)
{
sum=(int)(M-(int)((M/N)+0.5)+1);
return sum;
}
else
return sum+count1(M,N-1);
}
int main()
{
int t,m,n;
cin>>t;
vector<pair<int,int> >vec;
for(int i=0;i<t;++i)
{
cin>>m>>n;
vec.push_back(make_pair(m,n));
}
for(int j=0;j<vec.size();j++)
{
cout<<count1(vec[j].first,vec[j].second)<<endl;
}
return 0;
}
#include <stdio.h>
#include <string.h>
int c[11][11][11];
int dfs(int m, int n, int k){
if(c[m][n][k] >= 0) return c[m][n][k];
if(m < n * k){
c[m][n][k] = 0;
return 0;
}
if(n == 1 && m >= k){
c[m][n][k] = 1;
return 1;
}
int cnt = 0;
for(int i = k; i <= m / n; ++i) cnt += dfs(m - i, n - 1, i);
c[m][n][k] = cnt;
return cnt;
}
int main(){
int t, m, n;
memset(c, -1, sizeof(c));
scanf("%d", &t);
while(t--){
scanf("%d%d", &m, &n);
printf("%d\n", dfs(m, n, 0));
}
return 0;
}