2017年东莞理工学院程序编程选拔赛

来源:互联网 发布:thinkphp 输出sql语句 编辑:程序博客网 时间:2024/04/29 12:23

阶乘运算

发布时间: 2017年7月1日 22:11   最后更新: 2017年7月2日 11:12   时间限制: 1000ms   内存限制: 128M

编制程序,输入m,n(m>=n>=0)后,计算下列表达式的值并输出:

         m!         

n! (m-n)!

要求将计算阶乘运算的函数写为fact(n),函数返回值的类型为float

m n

对应表达式的值

 复制
2 1

2

using namespace std;float fact(int n){float sum = 1;if (n == 0)return 1;else{for (int i = 1; i <= n; i++)sum *= i;}return sum;}int main(){int m=0, n=0;while (!m || !n)cin >> m >> n;m = m > n ? m : n;cout << fact(m) / (fact(n)*fact(m - n));return 0;}

词频统计A

发布时间: 2017年7月1日 22:13   最后更新: 2017年7月2日 14:41   时间限制: 1000ms   内存限制: 128M

编制程序,统计文本stdin中字符$出现的次数,并将结果写入stdout

字符文本

$次数

 复制
as$dfkjhkjkjdhfasdfkj$lskdfjwerijweirjo$wie 
3
#include <iostream> using namespace std;int main(){char str[1000];int count = 0, i;while (gets(str)){i = 0;if (str[0] == '\0')break;while (str[i]){if (str[i] == '$')count++;i++;}}cout << count;return 0;}

del_char

发布时间: 2017年7月1日 22:15   最后更新: 2017年7月1日 22:20   时间限制: 1000ms   内存限制: 128M

编制函数del_char

函数原型为 void del_char(char *,char),函数的功能是删除a指向的字符串中值为ch的字符,例如从字符串"AscADef"中删除'A'后,字符串为"scDef"。

需要删除的字符ch

需要处理的字符串

处理后的字符串

 复制
AAscADef
scDef

#include <iostream>using namespace std;char a[100];void del_char(char *str, char ch){int i = 0;int j = 0;while (str[i] != '\0'){if (str[i] != ch){a[j] = str[i];j++;}i++;}a[j] = '\0';}int main(){char ch;char str[100];cin >> ch;cin >> str;del_char(str, ch);cout << a;return 0;}

绝对值最小的数

发布时间: 2017年7月1日 22:31   时间限制: 1000ms   内存限制: 128M

输入10个数,找出其中绝对值最小的数,将它和最后一个数交换,然后输出这10个数。

十个数

交换后的十个数

 复制
10 2 30 40 50 60 70 80 90 100
10 100 30 40 50 60 70 80 90 2

#include <iostream>#include <math.h>using namespace std;int a[10];int index = 0;void chang(){int min=a[0];int temp;for (int i = 0; i < 10; i++){if (fabs((float)min)>fabs((float)a[i])){min = a[i];index=i;}}temp = a[9];a[9] = a[index];a[index] = temp;}int main(){for (int i = 0; i < 10; i++)cin >> a[i];chang();for (int i = 0; i < 10; i++)cout  << a[i]<<' ';return 0;}

字符串的输入输出处理

发布时间: 2017年7月1日 22:45   时间限制: 1000ms   内存限制: 128M

字符串的输入输出处理。

第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串可能含有空格,字符数不超过1000。

先将输入中的前N行字符串(可能含有空格)原样输出,再将余下的字符串(不含有空格)以空格或回车分割依次按行输出。每行输出之间输出一个空行。

 复制
2www.njupt.edu.cn NUPTA C MN U P Ter
www.njupt.edu.cn NUPTA C MNUPTer
#include<iostream>using namespace std;int Answer(char a[], int n){int i=1;char b[1010];if (n > 0)cout << endl;for (; a[i] != '\0'; i++){if (a[i - 1] == ' ' && a[i] != ' '){sscanf(a + i, "%s", b);puts("");puts(b);}}return 1;}int main(){char s[1001];int m, n;cin >> n;getchar();  m = 0;while (n-- && gets(s)){if (m)cout << endl;puts(s);m++;}s[0] = ' ';while (gets(s + 1))Answer(s, n);return 0;}

蛇行矩阵

发布时间: 2017年7月1日 22:46   时间限制: 1000ms   内存限制: 128M

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。

本题有多组数据,每组数据由一个正整数N组成。(N不大于100)

对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。

 复制
5
1 3 6 10 152 5 9 144 8 137 1211
#include <iostream> using namespace std;int main(){int num = 1;int n = 0;cin >> n;int ** a = new int *[n];for (int i = 0; i < n; i++){a[i] = new int[n];for (int j = 0; j <= i; j++){a[i - j][j] = num++;}}int temp = n;for (int i = 0; i < n; i++){for (int j = 0; j < temp; j++){cout << a[i][j];if (j < temp - 1)cout << ' ';}temp--;cout << endl;}return 0;}

Hanoi双塔问题

发布时间: 2017年7月1日 22:53   最后更新: 2017年7月2日 14:39   时间限制: 1000ms   内存限制: 128M

给定A,B,C三根足够长的细柱,在A柱上放有2n个中间有空的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的。现要将 这些圆盘移到C柱上,在移动过程中可放在B柱上暂存。要求

(1)每次只能移动一个圆盘;

(2) ABC三根细柱上的圆盘都要保持上小下大的顺序;

任务:An2n个圆盘完成上述任务所需的最少移动次数,对于输入的n,输出An

一个正整数n,表示在A柱上放有2n个圆盘。

一个正整数,为完成上述任务所需的最少移动次数An。

 复制
1
2
#include <iostream>  using namespace std;int main(){int n, count = 0;int a[64] = { 0 }, length;while (cin >> n){if (count) cout << endl;a[0] = 1;for (int l = 1; l <= n + 1; l++){for (int i = 0; i < 63; i++){a[i] *= 2;}for (int i = 0; i < 63; i++){if (a[i] >= 10){a[i + 1]++;a[i] %= 10;}if (a[i + 1] == 0 && a[i] != 0) length = i + 1;}}a[0] -= 2;for (int j = 0; j < length; j++)cout << a[length - 1 - j];cout << endl;count++;}return 0;}

守望者的逃离

发布时间: 2017年7月2日 10:50   最后更新: 2017年7月3日 12:16   时间限制: 1000ms   内存限制: 128M

恶魔猎手尤迫安野心勃勃.他背叛了暗夜精灵,率深藏在海底的那加企图叛变:守望者在与尤迪安的交锋中遭遇了围杀.被困在一个荒芜的大岛上。为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去,到那时,岛上的所有人都会遇难:守望者的跑步速度,为17m/s, 以这样的速度是无法逃离荒岛的。庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点。守望者的魔法值恢复的速度为4/s,只有处在原地休息状态时才能恢复。

现在已知守望者的魔法初值M,他所在的初始位置与岛的出口之间的距离S,岛沉没的时间T。你的任务是写一个程序帮助守望者计算如何在最短的时间内逃离荒岛,若不能逃出,则输出守望者在剩下的时间内能走的最远距离。注意:守望者跑步、闪烁或休息活动均以秒(s)为单位。且每次活动的持续时间为整数秒。距离的单位为米(m)

空格隔开的三个非负整数M,S,T。

第1行为字符串"Yes"或"No" (区分大小写),即守望者是否能逃离荒岛。

第2行包含一个整数,第一行为"Yes" (区分大小写)时表示守望着逃离荒岛的最短时间
第一行为"No" (区分大小写) 时表示守望者能走的最远距离。

 复制
39 200 4
No197
#include<iostream>using namespace std;int main(){int m, s, t, distance=0, reslut=0,total;cin >> m >> s >> t;total = t; while (t--){if (m >= 10){m -= 10;distance += 60;}else m += 4;reslut += 17;if (distance > reslut)reslut = distance;if (reslut > s)break; }if (reslut >= s && t >= 0)cout << "Yes" << endl << total - t;else cout << "No" << endl << reslut;return 0;}

纪念品分组

发布时间: 2017年7月2日 10:51   最后更新: 2017年7月2日 14:52   时间限制: 1000ms   内存限制: 128M

元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。

你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。

第1行包括一个整数w,为每组纪念品价格之和的上眼
第2行为一个整数n,表示购来的纪念品的总件数G
第3-n+2行每行包含一个正整数Pi (5 <= Pi <= w)w表示所对应纪念品的价格。

一个整数, ep最少的分组数目合

 复制
1009     90     20     20     30     50     60     70     80     90 
6
#include <iostream>using namespace std;long long a[30010];void qsort(int l, int r){int i, j, mid, p;i = l; j = r;mid = a[(l + r) / 2];do{while (a[i]<mid)i++;while (a[j]>mid)j--;if (i <= j){p = a[i];a[i] = a[j];a[j] = p;i++; j--;}} while (i <= j);if (l < j)qsort(l, j);if (i < r)qsort(i, r);}int main(){long long n, i, w, k = 0, j, l;cin >> w >> n;for (i = 1; i <= n; i++)cin >> a[i];qsort(1, n);l = 1;for (i = n; i >= l; i--){if (a[i] + a[l] <= w)l++;k++;}cout << k;return 0;}






原创粉丝点击