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课作业的更多相关文章

  1. noip第34课作业

    1.    信息加密 [问题描述] 在传递信息的过程中,为了加密,有时需要按一定规则将文本转换成密文发送出去.有一种加密规则是这样的:1. 对于字母字符,将其转换成其后的第3个字母.例如:A→D,a→ ...

  2. noip第33课作业

    1.    排座椅 [问题描述] 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同 ...

  3. noip第29课作业

    1.   钢条切割 [问题描述] 一家公司购买长钢条,将其切割成短钢条出售,切割本身没有成本,长度为i的短钢条的价格为Pi.那给定一段长度为n的钢条和一个价格表Pi,求钢条的切割方案使得收益Rn最大. ...

  4. noip第28课作业

    分段数列 [问题描述] 对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求. 输入格式: 输入第1行包含两个正整 ...

  5. noip第17课作业

    1.  召见骑士 [问题描述] 某王国有5位骑士,每位骑士都有自己的编号,且这个王国的编号都为奇数,分别为1,3,5,7,9,在国王召见他们之前他们都必须经过只能从一边进出的长廊,长廊的宽度只能坐一个 ...

  6. noip第16课作业

    1. 猴子吃桃 [问题描述] 猴子第一天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个:第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个:以后每天都吃前一天剩下的一半多一个,到第10天想再吃时 ...

  7. noip第5课作业

    1.     计算税收 [问题描述] 对某产品征收税金,在产值1万元以上收税5%:在1万元以下但在5000元或者以上的征收税3%:在5000元以下但在1000元或以上征收税2%:1000元以下的免收税 ...

  8. 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 ...

  9. noip第8课作业

    1.     计算书费 [问题描述]下面是一个图书的单价表: 计算概论 28.9 元/本 数据结构与算法 32.7 元/本 数字逻辑 45.6元/本 C++程序设计教程 78 元/本 人工智能 35  ...

随机推荐

  1. python tcp 粘包问题解决、文件下载等

    from socket import * #以下是关于tcp:服务端 和 客户端的小例子#服务端socket_server = socket(AF_INET, SOCK_STREAM) socket_ ...

  2. 10.9h5日记

    一.单位 1.px是基本的单位,像素 2.em也是一个单位,使用方式,用元素父级的字体大小乘以em前的数字,父级没有就向上一个父级找, 直到body为止,如果body没有,就用默认的字体大小16px ...

  3. android 线性布局

    activity_main.xml线性布局 <?xml version="1.0" encoding="utf-8"?> <LinearLay ...

  4. Luogu 1341 无序字母对 - 欧拉路径

    Solution 找一条字典序最小的欧拉路径. 用 $multiset$ 存储领接表. 欧拉路径模板传送门 Code #include<cstdio> #include<cstrin ...

  5. Python GUI中 text框里实时输出

    首先GUI中不同函数的局部变量的问题. 发现不同button定义的函数得到的变量无法通用. 通过global 函数内的变量可以解决这个问题 def openfiles2(): global s2fna ...

  6. Eclipse快捷键系列

    查看Eclipse自定义的快捷键或者自己定义快捷键的方式 Window --> preference --> general --> Keys 在光标所在行之后插入一行,省去了将光标 ...

  7. Vue 汇总

    1.右键菜单(防止默认行为) @contextmenu.native.prevent="rightClick()"

  8. .net上传文件,利用npoi读取文件信息到datatable里

    整理代码,.net上传文件,利用npoi读取文件到datatable里,使用了FileUpload控件,代码如下: protected void Button1_Click(object sender ...

  9. [IBM][CLI Driver][DB2/NT] SQL1101N 不能以指定的授权标识和密码访问节点 "" 上的远程数据库 "LBZM"。 SQLSTATE=08004

    [IBM][CLI Driver][DB2/NT] SQL1101N  不能以指定的授权标识和密码访问节点 "" 上的远程数据库  "LBZM".  SQLST ...

  10. Easyui form 表单中的 radio 无法一开始就选中原因

    是因为你在form表单里面,所以会出现样式没有选中状态,必须要从后台去获取数据,然后再绑定.也就是初始化数据.