九度OJ 题目1058:反序输出
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1171 解决:346
题目描述:
输入任意4个字符(如:abcd), 并按反序输出(如:dcba)
输入:
题目可能包含多组用例,每组用例占一行,包含4个任意的字符。
输出:
对于每组输入,请输出一行反序后的字符串。
具体可见样例。
样例输入:
Upin
cvYj
WJpw
cXOA
样例输出:
nipU
jYvc
wpJW
AOXc
九度OJ 题目1059:abc
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:423 解决:330
题目描述:
设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c的值。
输入:
题目没有任何输入。
输出:
请输出所有满足题目条件的a、b、c的值。
a、b、c之间用空格隔开。
每个输出占一行。
九度OJ 题目1060:完数VS盈数
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:751 解决:247
题目描述:
一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1。则称其为“完数”;若因子之和大于该数,则称其为“盈数”。
求出2到60之间所有“完数”和“盈数”。
输入:
题目没有任何输入。
输出:
输出2到60之间所有“完数”和“盈数”,并以如下形式输出:
E: e1 e2 e3 ......(ei为完数)
G: g1 g2 g3 ......(gi为盈数)
其中两个数之间要有空格,行尾不加空格。
九度OJ 题目1061:成绩排序
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:910 解决:188
题目描述:
有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。
输入:
测试数据有多组,每组输入第一行有一个整数N(N<=1000),接下来的N行包括N个学生的数据。
每个学生的数据包括姓名(长度不超过100的字符串)、年龄(整形数)、成绩(小于等于100的正数)。
输出:
将学生信息按成绩进行排序,成绩相同的则按姓名的字母序进行排序。
然后输出学生信息,按照如下格式:
姓名 年龄 成绩
样例输入:
3
abc 20 99
bcd 19 97
bed 20 97
样例输出:
bcd 19 97
bed 20 97
abc 20 99
提示:
学生姓名的字母序区分字母的大小写,如A要比a的字母序靠前(因为A的ASC码比a的ASC码要小)。
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1171 解决:346
题目描述:
输入任意4个字符(如:abcd), 并按反序输出(如:dcba)
输入:
题目可能包含多组用例,每组用例占一行,包含4个任意的字符。
输出:
对于每组输入,请输出一行反序后的字符串。
具体可见样例。
样例输入:
Upin
cvYj
WJpw
cXOA
样例输出:
nipU
jYvc
wpJW
AOXc
//清华2000:题目1058:反序输出
//输入一个整数n,输出n的阶乘 (1<=n<=20)
#include <cstring>
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
int i, j, k, n;
char s[4];
while( scanf("%s",s)!=EOF ){
for( i=3; i>=0; i-- )
printf("%c",s[i]);
printf("\n");
}
return 0;
}
九度OJ 题目1059:abc
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:423 解决:330
题目描述:
设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c的值。
输入:
题目没有任何输入。
输出:
请输出所有满足题目条件的a、b、c的值。
a、b、c之间用空格隔开。
每个输出占一行。
//清华2000:题目1059:abc
//设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c的值。
//请输出所有满足题目条件的a、b、c的值。 a、b、c之间用空格隔开。
//显然a<=5 c=1or6
#include <iostream>
using namespace std;
int main()
{
int a, b, k, n;
int c[2] = { 1, 6 };
for( a=0; a<=5; a++ ) //i=a
for( b=0; b<10; b++ ) //j=b k=c
for( k=0; k<2; k++ ){
n = 100*(a+b) + 10*(b+c[k]) + 2*c[k];
if( n == 532 )
cout << a << " " << b << " " << c[k] << endl;
}
system("pause");
return 0;
}
九度OJ 题目1060:完数VS盈数
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:751 解决:247
题目描述:
一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1。则称其为“完数”;若因子之和大于该数,则称其为“盈数”。
求出2到60之间所有“完数”和“盈数”。
输入:
题目没有任何输入。
输出:
输出2到60之间所有“完数”和“盈数”,并以如下形式输出:
E: e1 e2 e3 ......(ei为完数)
G: g1 g2 g3 ......(gi为盈数)
其中两个数之间要有空格,行尾不加空格。
//清华2000:题目1060:完数VS盈数
//一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1。则称其为“完数”;若因子之和大于该数,则称其为“盈数”。
//求出2到60之间所有“完数”和“盈数”。
#include <iostream>
using namespace std;
int main()
{
int i, j, k, n;
int index, sum, d[60]; //num记录d[]中非零元素个数
int e[60], g[60];
int eNum=0, gNum=0;
for( i=2; i<=60; i++ ){
index = 0;
sum = 1; //1是每个数的因子
for( j=2; j<i; j++ )
if( i % j == 0 ){
d[index] = j;
index++;
}
//cout << "i=" << i << "--";//
for( j=0; j<index; j++ ){
sum += d[j];
//cout << d[j] << " ";
}
//cout << " sum=" << sum << endl;//
if( sum == i ){
e[eNum] = i;
eNum++;
//cout << "e=" << i << endl;//
}
else if( sum > i ){
g[gNum] = i;
gNum++;
}
}
cout << "E: ";
for( i=0; i<eNum-1; i++ )
cout << e[i] << " ";
cout << e[eNum-1] << endl;
cout << "G: ";
for( i=0; i<gNum-1; i++ )
cout << g[i] << " ";
cout << g[gNum-1];
system("pause");
return 0;
}
九度OJ 题目1061:成绩排序
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:910 解决:188
题目描述:
有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。
输入:
测试数据有多组,每组输入第一行有一个整数N(N<=1000),接下来的N行包括N个学生的数据。
每个学生的数据包括姓名(长度不超过100的字符串)、年龄(整形数)、成绩(小于等于100的正数)。
输出:
将学生信息按成绩进行排序,成绩相同的则按姓名的字母序进行排序。
然后输出学生信息,按照如下格式:
姓名 年龄 成绩
样例输入:
3
abc 20 99
bcd 19 97
bed 20 97
样例输出:
bcd 19 97
bed 20 97
abc 20 99
提示:
学生姓名的字母序区分字母的大小写,如A要比a的字母序靠前(因为A的ASC码比a的ASC码要小)。
//清华2000:题目1061:成绩排序
//姓名(长度不超过100的字符串)
//将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,[成绩低的靠前]
//如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。
//学生姓名的字母序区分字母的大小写,如A要比a的字母序靠前(因为A的ASC码比a的ASC码要小)。
//#include <fstream>
//#include <memory.h>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdio>
#include <iostream>
using namespace std;
struct STUDENT{
char name[100];
int age;
int score;
};
STUDENT s[1000];
int cmpName( char m[], char n[] ){ //返回1表示m更靠前
int xlen = strlen(m);
int ylen = strlen(n);
char small;
int minlen=xlen;
if( xlen<ylen )
small='x';
else if( xlen>ylen ){
minlen=ylen;
small='y';
}else small='e';
int i, j;
bool same = 0;
for( i=0; i<minlen; i++ ){
if( m[i] == n[i] ){
if( i == minlen-1 )
same = 1;
else continue;
}
else if( m[i] < n[i] )
return 1;
else
return 0;
}
if( same == 1 ){
if( small=='e' )
return 2;
if( small=='x' )
return 1;
else return 0;
}
};
bool cmp( STUDENT x, STUDENT y ){
if( x.score == y.score ){
int nameResult = cmpName( x.name, y.name );
if( nameResult == 2 )
return x.age < y.age;
else
return nameResult;
}else
return x.score < y.score;
};
int main()
{
int i, j, k, n;
//freopen("THU_1061.txt", "r", stdin);//
while( scanf("%d",&n)!=EOF ){
for( i=0; i<n; i++ )
scanf("%s%d%d", s[i].name, &s[i].age, &s[i].score ); //char前不需加&
sort( s, s+n, cmp );
for( i=0; i<n; i++ )
printf("%s %d %d\n", s[i].name, s[i].age, s[i].score );
}
//fclose(stdin);//
//while(1);//
return 0;
}
上面的是C风格的 底下的是C++风格的 有时候我就在想 要是考试时老师能把C++风格的程序因为输入输出带来的比C多出的时间测出来并减掉使得那种输入输出量很大的题目 用C++写也不超时该多好 不喜欢C的输入输出风格
//清华2000:题目1061:成绩排序
//姓名(长度不超过100的字符串)
//将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,[成绩低的靠前]
//如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。
//学生姓名的字母序区分字母的大小写,如A要比a的字母序靠前(因为A的ASC码比a的ASC码要小)。
#include <fstream>
#include <algorithm>
#include <string>
#include <iostream>
using namespace std;
struct STUDENT{
string name;
int age;
int score;
};
STUDENT s[1000];
bool cmpName( string m, string n ){ //返回1表示m更靠前
int xlen = m.length();
int ylen = n.length();
char small;
int minlen;
if( xlen<ylen ){
minlen=xlen;
small='x';
}else{
minlen=ylen;
small='y';
}
int i, j;
bool same = 0;
for( i=0; i<minlen; i++ ){
if( m[i] == n[i] ){
if( i == minlen-1 )
same = 1;
else continue;
}
else if( m[i] < n[i] )
return 1;
else
return 0;
}
if( same == 1 ){
if( small=='x' )
return 1;
else return 0;
}
};
bool cmp( STUDENT x, STUDENT y ){
if( x.score == y.score ){
if( x.name == y.name )
return x.age < y.age;
else
return cmpName( x.name, y.name );
}else
return x.score < y.score;
};
int main()
{
int i, j, k, n;
//ifstream cin("THU_1061.txt");
while( cin >> n ){
for( i=0; i<n; i++ )
cin >> s[i].name >> s[i].age >> s[i].score;
sort( s, s+n, cmp );
for( i=0; i<n; i++ )
cout << s[i].name << " " << s[i].age << " " << s[i].score << endl;
}
//system("pause");
return 0;
}