noip第15课作业
1. 累加求和
给定n(1<=n<=100),用递归的方法计算1+2+3+4+5+......+(n-1)+n.
输入:一个大于等于1的整数。
输出:输出一个整数。
【样例输入】
5
【样例输出】
15
#include <iostream> using namespace std;
int fac(int n){
if(n == )
return ;
return (fac(n-) + n);
}
int main(){
int n;
cin >> n;
cout << fac(n) << endl;
return ;
}
2. 苹果划分问题
给定带有编号的n个苹果(a1,a2,...,an)放入k个(0<k<=n<30)无标号的盒子中,使得没有一个盒子为空,请问一共有多少中划分的方法。
输入:一行,两个数空格隔开,第一个是苹果数量,第二个事盒子数量。
输出:一行包含一个数,表示一共有的划分数量。
【输入样例】
10 6
【输出样例】
22827
#include <iostream> using namespace std;
int s(int n,int k){ //配合大数使用。防止数据爆掉
if(n < k || k == )
return ;
if(k == || k == n)
return ;
//n = 3 k = 2
//n = 2 k =1 方法只有1种
// 2 2 方法是1 *2 2 1 + 2 = 3
return s(n-,k-)+k*s(n-,k); }
int main(){
//n是苹果数量 k是盒子数量 n=3 k=2
int n,k;
cin >> n >> k;
cout << s(n,k);
return ;
}
1. Pell数列
Pell数列A1,A2,A3,...的定义是这样的,A1=1,A2=2, ... ,An=2*An-1+An-2(n>2)
给出一个正整数k,要求Pell数列的第k项模上32767是多少。
输入:第一行时测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数k(1<=k<=1000000).
输出:n行,每行输出对应一个输入。输出应是一个非负整数。
【样例输入】
2
1
8
【样例输出】
1
408
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
long long b[];
long long r[];
long long zjf(int n){
if(n<) //设置边界
return n;
if(b[n]==) //记忆化递归调用
b[n]=(*zjf(n-)+zjf(n-))%; //取mod,不让long long数组爆掉,但是为了避免统计错误,就取100000的mod
return (b[n]%);
}
int main()
{
int n,x;
cin>>n;
for(int i=;i<=n;i++){
cin>>x;
//cout<<zjf(x)<<endl;
r[i] = zjf(x);
}
for(int j=;j<=n;j++){
cout << r[j] << endl;
}
}
2. 拆分自然数
任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。拆分成的数字相同但顺序不同被看做是相同的方案,如3+1和1+3被看做是同一种方案。
输入:输入待拆分的自然数n。
输出:如样例输出若干个拆分方案(具体见样例)。
【样例输入】
7
【样例输出】
1+1+1+1+1+1+1
1+1+1+1+1+2
1+1+1+1+3
1+1+1+2+2
1+1+1+4
1+1+2+3
1+1+5
1+2+2+2
1+2+4
1+3+3
1+6
2+2+3
2+5
3+4
#include<bits/stdc++.h>
using namespace std;
int a[];
int print(int n)
{
for(int i=; i<=n; i++)
{
if(i!=)
printf("+");
printf("%d",a[i]);
}
printf("\n");
}
int DFS(int n,int ans) //ans表示递归的深度,每一个深度对应 多个表达式,
{
for(int i=; i<=n/; i++) //后者大于等于前者
{
if(i>=a[ans-]) //保证后一个值一定大于等于前一个值
{
a[ans]=i;
a[ans+]=n-i;
print(ans+);
DFS(n-i,ans+);
}
}
}
int main()
{
int n;
while(~scanf("%d",&n))
{
a[]=;
DFS(n,);
}
}
3. 分数求和
输入n个分数并对他们求和,并用最简单形式表示。所谓的最简单形式是指:分母分子的最大公约数是1;若最终结果的分母为1,则直接用整数表示。
如:5/6, 10/3均是最简形式,而3/6需要化简为1/2, 3/1需要化简为3。
分子分母均不为0,也不为负数。
输入:第一行是一个整数n,表示分数个数,1<=n<=10;接下来的n行,每行一个分数,用”p/q”的形式表示,不含空格,p,q均不超过10。
输出:只有一行,即最终结果的最简形式。若为分数,用”p/q”表示。
【样例输入】
2
1/2
1/3
【样例输出】
5/6
#include<iostream>
#include<cstdlib>
#include<algorithm>
#include<iomanip>
#include<math.h>
#include<cstdio>
using namespace std;
int gcd(int a,int b)//最大公约数
{
if(b==) return a;
return gcd(b,a%b);
}
int lcd(int a,int b)//最小公倍数
{
int c;
if(a<=||b<=) return -;
c=gcd(a,b);
return a*b/c;
}
int main()
{
int n,d,num1=,num2=,num3=,num4=;
cin>>n;
char c;
while(n--)
{
scanf("%d%c%d",&num1,&c,&num2);
d=lcd(num2,num4);
num3=num3*d/num4+num1*d/num2;
num4 =d;
d=gcd(num3,num4);
if(d>)
{
num3/=d;
num4/=d;
}
}
num4>?printf("%d/%d",num3,num4):printf("%d",num3);
}
noip第15课作业的更多相关文章
- noip第34课作业
1. 信息加密 [问题描述] 在传递信息的过程中,为了加密,有时需要按一定规则将文本转换成密文发送出去.有一种加密规则是这样的:1. 对于字母字符,将其转换成其后的第3个字母.例如:A→D,a→ ...
- noip第33课作业
1. 排座椅 [问题描述] 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同 ...
- noip第29课作业
1. 钢条切割 [问题描述] 一家公司购买长钢条,将其切割成短钢条出售,切割本身没有成本,长度为i的短钢条的价格为Pi.那给定一段长度为n的钢条和一个价格表Pi,求钢条的切割方案使得收益Rn最大. ...
- noip第28课作业
分段数列 [问题描述] 对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求. 输入格式: 输入第1行包含两个正整 ...
- noip第17课作业
1. 召见骑士 [问题描述] 某王国有5位骑士,每位骑士都有自己的编号,且这个王国的编号都为奇数,分别为1,3,5,7,9,在国王召见他们之前他们都必须经过只能从一边进出的长廊,长廊的宽度只能坐一个 ...
- noip第16课作业
1. 猴子吃桃 [问题描述] 猴子第一天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个:第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个:以后每天都吃前一天剩下的一半多一个,到第10天想再吃时 ...
- noip第5课作业
1. 计算税收 [问题描述] 对某产品征收税金,在产值1万元以上收税5%:在1万元以下但在5000元或者以上的征收税3%:在5000元以下但在1000元或以上征收税2%:1000元以下的免收税 ...
- noip第9课作业
1. 打印乘法表 [问题描述] 用for循环实现输出1至9的乘法表 [样例输出] 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4 ...
- noip第8课作业
1. 计算书费 [问题描述]下面是一个图书的单价表: 计算概论 28.9 元/本 数据结构与算法 32.7 元/本 数字逻辑 45.6元/本 C++程序设计教程 78 元/本 人工智能 35 ...
随机推荐
- Java中重写与重载的区别
方法重载:关键字overload,方法名和方法的返回类型都相同,方法参数个数和类型不一样方法重写:也叫方法覆盖,关键字override,相对于类继承而言,重写的方法名,返回类型,参数个数,参数类型都要 ...
- Java泛型:List<?>与List的区别
为什么说List<?>是type-safe而List不是type-safe的? 1.List<?> compiler看到了你使用了wildcard ?,那么相当于你对compi ...
- XXE总结
0x00 目录 0x01 XML基础 定义:一种标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. XML文档结构包括XML声明.D ...
- .net上传文件,利用npoi读取文件信息到datatable里
整理代码,.net上传文件,利用npoi读取文件到datatable里,使用了FileUpload控件,代码如下: protected void Button1_Click(object sender ...
- idea properties编码问题
单个文件设置 全局设置default settings
- mybatis @SelectKey加于不加的区别
正常情况下,我们设置表的主键自增,然后: @Insert("insert into miaosha_order (user_id, goods_id, order_id)values(#{u ...
- 【Web】移动端下拉刷新、上拉加载更多插件
移动网站中常常有的功能:列表的下拉刷新.上拉加载更多 本例介绍一种简单使用的移动端下拉刷新.上拉加载更多插件,下载及参考地址:https://github.com/ximan/dropload 插件依 ...
- day14(内置函数)
print(list(map(func, lambda x : x)) print(list(filter lambda x : x > len(x))) print(zip(l1,l2,tu) ...
- kbmmw 中简单返回 extjs 数据JSON
以前,我们通过自己写json 来返回数据表的内容.在delphi 10.2.2中,官方自带了一个FDBatchMoveJSONWriter1 来直接处理数据库内容.把结果推送到浏览器客户端. 今天我们 ...
- list集合去除重复对象的实现
下面小编就为大家带来一篇list集合去除重复对象的实现.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 对象重复是指对象里面的变量的值都相等,并不定是地址.list集合存 ...