01_南理学工学院OJ_部分简单题目

来源:互联网 发布:javascript xml 编辑:程序博客网 时间:2024/04/27 17:05

听网友建议,前段时间接触刘汝佳的《算法竞赛入门经典》时在南理学工学院(http://acm.nyist.net/JudgeOnline/problemset.php)刷过的一些些简单题目。

 

南理学工学院_部分简单题目(8题):
南阳理工学院_0001_A+B Problem.cpp
南阳理工学院_0004_ASCII码排序.cpp
南阳理工学院_0011_奇偶数分离.cpp
南阳理工学院_0013_Fibonacci数.cpp
南阳理工学院_0031_5个数求最值.cpp
南阳理工学院_0034_韩信点兵.cpp
南阳理工学院_0039_水仙花数.cpp
南阳理工学院_0041_三个数从小到大排序.cpp

 

南阳理工学院_0001_A+B Problem.cpp

// 南阳理工学院_0001_A+B Problem.cpp/** * A+B Problem * 时间限制:3000 ms  |  内存限制:65535 KB * 难度:0 * 描述 * 此题为练手用题,请大家计算一下a+b的值 * 输入 * 输入两个数,a,b * 输出 * 输出a+b的值 * 样例输入 * 2 3 * 样例输出 * 5 **/#include <iostream>using namespace std;int main(){    int a, b;    cin >> a >> b;    cout << a + b << endl;    return 0;}



南阳理工学院_0004_ASCII码排序.cpp

// 南阳理工学院_0004_ASCII码排序.cpp/** * ASCII码排序 * 时间限制:3000 ms  |  内存限制:65535 KB * 难度:2 * 描述 * 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。 * 输入 * 第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。 * 输出 * 对于每组输入数据,输出一行,字符中间用一个空格分开。 * 样例输入 * 3 * qwe * asd * zxc * 样例输出 * e q w * a d s * c x z * 来源 * 网络 * 上传者 * naonao **/ #include <iostream>using std::cin;using std::cout;inline void swap(char & x, char & y){char t;t = x;x = y;y = t;    return;}int main(){int n;cin >> n;while( n--){char a;char b;char c;cin >> a >> b >> c;if (a > b) swap(a, b);if (a > c) swap(a, c);if (b > c) swap(b, c);cout << a << " " << b << " " << c  << std::endl;}return 0;}



南阳理工学院_0011_奇偶数分离.cpp

// 南阳理工学院_0011_奇偶数分离.cpp/** * 奇偶数分离 * 时间限制:3000 ms  |  内存限制:65535 KB * 难度:1 * 描述: * 有一个整型偶数n(2<= n <=10000),你要做的是:先把1到n中的所有奇数从小到大输出,再把所有的偶数从小到大输出。 * 输入: * 第一行有一个整数i(2<=i<30)表示有 i 组测试数据; * 每组有一个整型偶数n。 * 输出: * 第一行输出所有的奇数 * 第二行输出所有的偶数 * 样例输入: * 2 * 10 * 14 * 样例输出: * 1 3 5 7 9  * 2 4 6 8 10  *  * 1 3 5 7 9 11 13  * 2 4 6 8 10 12 14  *  * 来源: * [苗栋栋]原创 * 上传者 * 苗栋栋 **/#include <iostream>using std::cin;using std::cout;using std::endl;int main(){    int i(0);    cin >> i;    for ( int j = 0; j < i; ++j)    {        int max;        cin >> max;        int oddNumber(1);        int evenNumber(2);        for (; oddNumber <= max; oddNumber += 2)        {            cout << oddNumber << " ";        }        cout << endl;        for (; evenNumber <= max; evenNumber +=2)        {            cout << evenNumber << " ";        }        cout << endl;        cout << endl;    }    return 0;}



南阳理工学院_0013_Fibonacci数.cpp

// 南阳理工学院_0013_Fibonacci数.cpp/** * Fibonacci数 * 时间限制:3000 ms  |  内存限制:65535 KB * 难度:1 * 描述 * 无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递归地定义为 * F(n)=1 ...........(n=1或n=2) * F(n)=F(n-1)+F(n-2).....(n>2) * 现要你来求第n个斐波纳奇数。(第1个、第二个都为1) * 输入 * 第一行是一个整数m(m<5)表示共有m组测试数据 * 每次测试数据只有一行,且只有一个整形数n(n<20) * 输出 * 对每组输入n,输出第n个Fibonacci数 * 样例输入 * 3 * 1 * 3 * 5 * 样例输出 * 1 * 2 * 5 * 来源 * 经典题目 * 上传者 * 张云聪  **/#include <iostream>using std::cin;using std::cout;int main(){int n;cin >> n;while( n--){int number;cin >> number;int sum = 1;int last = 0;while(--number){int prevent = sum;sum += last;last  = prevent;}cout << sum << std::endl;}return 0;}



南阳理工学院_0031_5个数求最值.cpp

// 南阳理工学院_0031_5个数求最值.cpp/** * 5个数求最值 * 时间限制:1000 ms  |  内存限制:65535 KB * 难度:1 * 描述 * 设计一个从5个整数中取最小数和最大数的程序 * 输入 * 输入只有一组测试数据,为五个不大于1万的正整数 * 输出 * 输出两个数,第一个为这五个数中的最小值,第二个为这五个数中的最大值,两个数字以空格格开。 * 样例输入 * 1 2 3 4 5 * 样例输出 * 1 5 * 来源 * C语言课本第四章第一题 * 上传者 * 张云聪 **/ #include <iostream>using namespace std;int main(){int a[5];    cin >> a[0] >> a[1] >> a[2] >> a[3] >> a[4];int maxElem = a[0];int minElem = a[0];int i;for (i = 0; i !=5; ++i){   if (a[i] > maxElem)  maxElem = a[i];   if (a[i] < minElem) minElem = a[i];}cout << minElem  << " " << maxElem << endl;return 0;}



南阳理工学院_0034_韩信点兵.cpp

// 南阳理工学院_0034_韩信点兵.cpp/** * 韩信点兵 * 时间限制:3000 ms  |  内存限制:65535 KB * 难度:1 * 描述 * 相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100 。 * 输入 * 输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7)。例如,输入:2 4 5 * 输出 * 输出总人数的最小值(或报告无解,即输出No answer)。实例,输出:89 * 样例输入 * 2 1 6 * 样例输出 * 41 * 来源 * 经典算法 * 上传者 * 首席执行官 **/ #include <iostream> using std::cin; using std::cout;int main(){int a, b, c;cin >> a >> b >> c;int x = 0;for (x = 10; x <= 100; ++x){if ( (x % 3 == a) && (x % 5 == b) && (x % 7 == c)){cout << x << "\n";break;}}if ( x == 101){cout << "No answer\n";}return 0;}



南阳理工学院_0039_水仙花数.cpp

// 南阳理工学院_0039_水仙花数.cpp/** * 水仙花数 * 时间限制:1000 ms  |  内存限制:65535 KB * 难度:0 * 描述 * 请判断一个数是不是水仙花数。 * 其中水仙花数定义各个位数立方和等于它本身的三位数。 * 输入 * 有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000) * 输入0表示程序输入结束。 * 输出 * 如果n是水仙花数就输出Yes * 否则输出No * 样例输入 * 153 * 154 * 0 * 样例输出 * Yes * No * 来源 * C语言课本习题改编 * 上传者 * 张云聪 **/ #include <iostream>using std::cin;using std::cout; inline int threeTime(int source){    return source * source * source;}inline int result(int source){ return threeTime(source/100) + threeTime(source % 100 / 10) + threeTime(source % 10);}        int main(){     int test;     while(cin >> test)     {        if (test == 0)        {          break;        }        if ( result(test) == test )        {             cout << "Yes\n";        }        else        {            cout << "No\n";        }       }     return 0;}                



南阳理工学院_0041_三个数从小到大排序.cpp

// 南阳理工学院_0041_三个数从小到大排序.cpp/** * 三个数从小到大排序 * 时间限制:3000 ms  |  内存限制:65535 KB * 难度:0 * 描述 * 现在要写一个程序,实现给三个数排序的功能 * 输入 * 输入三个正整数 * 输出 * 给输入的三个正整数排序 * 样例输入 * 20 7 33 * 样例输出 * 7 20 33 * 来源 * [张洁烽]原创 * 上传者 * 张洁烽 **/#include <iostream>using std::cin;using std::cout;int main(){int a, b, c;cin >> a >> b >> c;if (a > b) { a = b + a; b = a - b; a = a -b;}if (a > c) { a = c + a; c = a - c; a = a - c;}if (b > c) { b = c + b; c = b - c; b = b - c;}cout << a  << " " << b  <<  " " << c  << " "<< std::endl;return 0;}