COJN 0583 800602分苹果

800602分苹果
难度级别:B; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B

试题描述

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。

输入

第一行是测试数据的数目t,以下每行均包含二个整数M和N,以空格分开。

输出

对输入的每组数据M和N,用一行输出相应的K。

输入示例

1
7 3

输出示例

8

其他说明

数据范围:0<=t<=20,1<=M,N<=10。

题解:经典以0分dp。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<queue>
 6 #include<cstring>
 7 #define PAU putchar(‘ ‘)
 8 #define ENT putchar(‘\n‘)
 9 using namespace std;
10 int fun(int m,int n){
11     if(!m||n==1)return 1;
12     if(n>m)return fun(m,m);
13     else return fun(m,n-1)+fun(m-n,n);
14 }
15 inline int read(){
16     int x=0,sig=1;char ch=getchar();
17     for(;!isdigit(ch);ch=getchar())if(ch==‘-‘)sig=0;
18     for(;isdigit(ch);ch=getchar())x=10*x+ch-‘0‘;
19     return sig?x:-x;
20 }
21 inline void write(int x){
22     if(x==0){putchar(‘0‘);return;}if(x<0)putchar(‘-‘),x=-x;
23     int len=0,buf[15];while(x)buf[len++]=x%10,x/=10;
24     for(int i=len-1;i>=0;i--)putchar(buf[i]+‘0‘);return;
25 }
26 void init(){
27     int T=read();int m,n;
28     while(T--){
29         m=read();n=read();
30         write(fun(m,n));ENT;
31     }
32     return;
33 }
34 void work(){
35     return;
36 }
37 void print(){
38     return;
39 }
40 int main(){init();work();print();return 0;}
时间: 2024-10-20 15:51:22

COJN 0583 800602分苹果的相关文章

熊分苹果的问题

今天参加笔试,遇见一道编程题,给定一个1~9的整数N代表熊的数目,每只熊按照如下方式分苹果:先将苹果平均分为N份,再扔掉一个.要求输出最少的苹果总数? 思路1:逐层向下,设总数为X,则第一次每一份为(X-1)/N个苹果,第二次为((N-1)*((X-1)/N)-1)/N,依次类推.......,发现到最后由于嵌套的层数过多,已经被弄晕了,果断换方法. 思路2:(采取补苹果的方法)由题描述,因为要扔一个苹果,所以扔一个苹果==补N-1个苹果,因此第一个熊得到的苹果数为(X+N-1)/N,第二个熊得

C语言 &#183; 分苹果

算法提高 分苹果 时间限制:1.0s   内存限制:256.0MB 问题描述 小朋友排成一排,老师给他们分苹果. 小朋友从左到右标号1..N.有M个老师,每次第i个老师会给第Li个到第Ri个,一共Ri-Li+1个小朋友每人发Ci个苹果. 最后老师想知道每个小朋友有多少苹果. 输入格式 第一行两个整数N.M,表示小朋友个数和老师个数. 接下来M行,每行三个整数Li.Ri.Ci,意义如题目表述. 输出格式 一行N个数,第i个数表示第i个小朋友手上的水果. 样例输入 5 31 2 12 3 22 5

蓝桥杯 算法训练 ALGO-121 猴子分苹果

算法训练 猴子分苹果 时间限制:1.0s   内存限制:256.0MB 问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一份,最后把剩下的苹果重新合在一起.这些猴子依次悄悄来到山洞,都做同样的操作,恰好每次都剩下了m个苹果.第二天,这些猴子来到山洞,把剩下的苹果分成n分,巧了,还是剩下了m个.问,原来这些猴子至少采了多少个苹果. 输入格式 两个整数

分苹果

题目: 穷举法:由于3 1 1和1 3 1 是一种分法,所以也就是说在N个篮子里的苹果数目是 n1<=n2<=......<=nn.所以只要进行N次循环,假设上层循环标量是i,则下层循环时j=i. 由于事先N,即篮子的数目是不确定的,所以只能使用递归来确定循环层数. 1 #include<iostream> 2 using namespace std; 3 int count; 4 int foo(int n,int m,int prei,int temp[10]) 5 {

[华为机试真题]70.分苹果

题目 M个相同苹果放到N个相同篮子里有多少种放法,允许有篮子不放. 1<=M<=10,1<=N<=10 例如5个苹果三个篮子,3,1,1 和 1,1,3是同一种放法 输入 7 3 输出 8 思路 设f(m,n) 为m个苹果,n个盘子的放法数目: 当n>m:必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响.即if(n>m) f(m,n) = f(m,m) 当n<=m:不同的放法可以分成两类: (1)有至少一个盘子空着,即相当于f(m,n) = f(m

算法历练之路——分苹果

分苹果 时间限制: 1Sec 内存限制: 128MB 提交: 231 解决: 69 题目描述小朋友排成一排,老师给他们分苹果. 小朋友从左到右标号1..N.有M个老师,每次第i个老师会给第Li个到第Ri个,一共Ri-Li+1个小朋友每人发Ci个苹果. 最后老师想知道每个小朋友有多少苹果. 数据规模和约定 100%的数据,N.M≤100 000,1≤Li≤Ri≤N,0≤Ci≤100. 输入第一行两个整数N.M,表示小朋友个数和老师个数. 接下来M行,每行三个整数Li.Ri.Ci,意义如题目表述.输

分苹果问题的C++和Python实现

很好玩的一个问题.话说小明的苹果怎么可能一模一样? 显然这并不是重点.重点在于抽象这个问题的方法. 如果从M个苹果,拿出N个苹果,问有几种可能性,很明显这是典型的组合问题: combination algabra; 如果把M个苹果等分成N份.显然只有1种可能. 把苹果分成N堆,求可能性,我一时半会想不出什么数学模型.自然而然,想到了数学方法:迭代逼近和递归. 题目额外说明,1,3,1 和1,1,3算同一种分法.其分发可能等价于将苹果递减或者递增排列. 于是我们开始递归计数: 递归操作:遍历M~0

回档|分苹果

背景:今晚在tyvj参加了一下比赛,没想到可耻的跪了.第一题地球人都知道spfa,结果我写了个坐标类DP还得了30分……悲剧.唯一欣慰的是我用组合数学做出了第二题,奠定了我们学校有五个人冲进前六的基础.先发第二题好了. 题目:由于tyvj比较坑,比赛的题目竟然没了!只能说下大体意思.给定n个苹果,要求分到3个袋子中.袋子是无序的,问有多少种情况,并对k取模. 输入解释:第一行,输入两个整数n,k 输出解释:输出只有一行,即方案总数对k取模的结果. 输入样例: 11 10000 输出样例: 952

动态规划之分苹果

题目描述:将M个苹果放置到N个盘子中,可以有盘子为空,但是不分顺序,例如5个苹果分到3个盘子中,1+1+3和1+3+1视为同一种方法,求所有的方法总数. ****动态规划***** import java.util.Scanner; 2 public class Main{ 3 public static void main(String[] args) 4 { 5 /* 6 *以dp[i][j]表示i个苹果放置到j个盘子的方法数 7 *i个苹果放到j个盘子中(不分顺序)分为两种情况 8 *1.