为了实现建设世界一流大学和建设世界一流学科的目标,不少大学都用各种方式提升排名:发表论文、 申请基金、提升多样性. . . 不过看起来这些并不容易,而且 US News 和 Times 这样的机构并不一定会 公正评判你的工作。因此,一些大学更聪明——自己发布排行榜,这可以使得自己的名次间接变好。比如,通过上海某大学发布的软科排名(ARWU)作为桥梁,咖波甚至可以论证他的小汤河职业技术学院要好于清华大学:
现在,给定三个大写字母,你需要判断:
如果这三个大写字母分别为:NEU,则输出:Win
如果这三个大写字母分别为:THU,则输出:Lose
否则输出:?
输入格式:
一行三个大写字母,如题意所示
输出格式:
一行一个字符串,如题意所示
输入样例1:
NEU
输出样例1:
Win
输入样例2:
THU
输出样例2:
Lose
输入样例3:
KFC
输出样例3:
?
代码长度限制
16 KB
时间限制
1000 ms
内存限制
128 MB
#include<bits/stdc++.h>
using namespace std;
int main(){
string a;
cin>>a;
if(a=="NEU")cout<<"Win";
else if(a=="THU")cout<<"Lose";
else cout<<"?";
}
7-2 比大小
分数 30
全屏浏览题目
切换布局
作者 ACM-CLUB
单位 东北大学秦皇岛分校
知名数学家田所浩二先生证明了:
9>10
证明:写下两个数的十进制表示:
9.
10
观察这两个数字从前到后第一个不相同的数字,由于9>1,因此9>10。
用同样的方法,我们可以很容易地证明1919>114514:
1919..
114514
或者是999>99:
99.
999
现在,请你给田所浩二先生写一个程序,用来比较两个输入的数字。
输入格式:
第一行一个整数T(1≤T≤106) ,表示有T组数据
接下来T行,每行两个整数a,b(1≤a,b≤109)
输出格式:
输出总共T行,对于第i行:
如果"a>b",则输出:>
如果"a=b",则输出:=
如果"a<b",则输出:<
输入样例:
5
9 10
114514 1919
999 99
131 131
1314 520
输出样例:
>
<
>
=
<
提示:
为避免输出超时,请使用cout << "\n"替代cout << endl
代码长度限制
16 KB
时间限制
2000 ms
内存限制
128 MB
#include<bits/stdc++.h>
using namespace std;
int main(){
int T;
cin>>T;
string a,b;
int x,y;
for(int i=0;i<T;i++){
cin>>a>>b;
x=a.length();
y=b.length();
for(int j=0;j<max(x,y);j++){
if(a[j]>b[j]){
cout<<">"<<"\n";
break;
}
else if(a[j]<b[j]){
cout<<"<"<<"\n";
break;
}
else if(a[x-1]==b[y-1]){
if(j==x-1&&j==y-1){
cout<<"="<<"\n";
break;
}
}
}
}
}
7-3 矩阵乘法
分数 70
全屏浏览题目
切换布局
作者 ACM-CLUB
单位 东北大学秦皇岛分校
Alice在学线性代数。她觉得线代的计算特别麻烦,于是就来找你,希望你可以给她写一个程序计算两个矩阵的乘积。
矩阵乘法介绍:
矩阵A是一个N行P列的矩阵。
矩阵B是一个K行M列的矩阵。
当P=K时,A和B可以相乘(仅限于AB, BA不一定可行)
假设矩阵C=AB,那么Ci,j=∑t=1P(或K)Ai,t∗Bt,j
举个例子,假设A是一个2×3的矩阵,B是一个3×2的矩阵,最终结果C是一个2×2的矩阵,如下图所示
输入格式:
输入共一行,有三个整数N,P,M(N,P,M≤100)。表示矩阵A是一个N×P的矩阵,矩阵B是一个P×M的矩阵。
接下来N行,每行P个整数,读入矩阵A。
再接下来P行,每行M个整数,读入矩阵B。
数据保证在输入输出数据可以用int类型存储。
输出格式:
输出N行M列的矩阵C。每行最后一个数后面有一个空格。
输入样例:
在这里给出一组输入。例如:
3 3 3
1 3 2
1 0 0
1 2 2
0 0 2
7 5 0
2 1 1
输出样例:
在这里给出相应的输出。例如:
25 17 4
0 0 2
18 12 4
代码长度限制
16 KB
时间限制
1000 ms
内存限制
64 MB
#include<bits/stdc++.h>
using namespace std;
int main(){
int N,P,M;
cin>>N>>P>>M;
int A[N][P],B[P][M];
for(int i=0;i<N;i++){
for(int j=0;j<P;j++){
cin>>A[i][j];
}
}
for(int i=0;i<P;i++){
for(int j=0;j<M;j++){
cin>>B[i][j];
}
}
int s=0;
int C[N][M]={0};
for(int i=0;i<N;i++){
for(int j=0;j<M;j++){
for(int t=0;t<P;t++){
s+=A[i][t]*B[t][j];
}
C[i][j]=s;
s=0;
}
}
for(int i=0;i<N;i++){
for(int j=0;j<M;j++){
cout<<C[i][j]<<" ";
}
cout<<endl;
}
}
7-4 疯狂星期四
分数 200
全屏浏览题目
切换布局
作者 ACM-CLUB
单位 东北大学秦皇岛分校
已知2022年10月11日是星期二
现在给定你一个日期,你需要计算当天是星期几。
输入格式:
一行三个整数M,D,Y,表示所求日期为:M月D日,Y年
1600≤Y≤2400,保证输入日期均为合法日期。
输出格式:
输出一个数字,表示当前是星期几。
如果星期天,则输出0。
输入样例1:
8 17 1926
输出样例1:
2
输入样例2:
2 29 1904
输出样例2:
1
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
from import *
a,b,c=map(int,input().split())
theday=date(c,a,b)
print ((theday.weekday()+1)%7)
7-5 排列
分数 100
全屏浏览题目
切换布局
作者 ACM-CLUB
单位 东北大学秦皇岛分校
给你一个长度为n的排列p1,p2,p3,...,pn(1≤pi≤n,且对于任意i=j,都有pi=pj)
再给你一个整数k,每次操作的定义如下:
选定一个下标j(1≤j≤n−k+1),记m=max{pj,pj+1,...,pj+k−1},然后令pj,pj+1,...,pj+k−1的值都等于m。
你需要使用最少的操作次数,使得p中所有元素的值都等于n。
输入格式:
第一行两个整数n,k (2≤n≤106,2≤k≤n)
接下来一行n个整数,用空格隔开,分别表示p1,p2,...,pn
输出格式:
一行一个整数,表示最小的操作次数。
输入样例:
6 3
1 6 4 2 3 5
输出样例:
3
样例解释:
第一次操作选择:j=1,操作后p为:6 6 6 2 3 5
第二次操作选择:j=3,操作后p为:6 6 6 6 6 5
第三次操作选择:j=4,操作后p为:6 6 6 6 6 6
代码长度限制
16 KB
时间限制
1000 ms
内存限制
128 MB
#include<bits/stdc++.h>
using namespace std;
int main() {
double n,k;
cin>>n>>k;
cout<<ceil((n-1)/(k-1));
}
7-6 小步点
分数 100
全屏浏览题目
切换布局
作者 ACM-CLUB
单位 东北大学秦皇岛分校
现在是跑步时间。
咖波需要依次经过地图上的五个点位才能完成任务,为了节省体力,他希望以最短的距离跑完这五个点位。
现在给出这五个点位的坐标,你需要帮咖波求出最短距离。(咖波可以从任意一个坐标开始跑步)
输入格式:
总共五行
第i行有两个整数xi,yi(−103≤xi,yi≤103),表示第i个点位的坐标值。
数据保证不存在坐标相同的点。
输出格式:
输出一个实数,表示最短的跑步距离(保留三位小数)
输入样例:
0 0
0 2
2 2
2 0
1 1
输出样例:
6.828
样例解释:
可选择从(0,0)点开始,依次经过(0,2),(1,1),(2,0),(2,2)
此时距离为:2+2+2+2=6.828,可以证明这是最短的路径。
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<bits/stdc++.h>
using namespace std;
double juli(double x1,double y1,double x2,double y2) {
double d;
d=sqrt(pow(x1-x2,2)+pow(y1-y2,2));
return d;
}
int main() {
double x[5],y[5];
double s=0;
double min=999999;
for(int i=0; i<5; i++) {
cin>>x[i]>>y[i];
}
for(int i=0; i<5; i++) {
s=0;
for(int j=0; j<5; j++) {
if(j!=i) {
for(int h=0; h<5; h++) {
if(h!=i&&h!=j) {
for(int k=0; k<5; k++) {
if(k!=i&&k!=j&&k!=h) {
for(int g=0; g<5; g++) {
if(g!=i&&g!=j&&g!=h&&g!=k) {
s=juli(x[i],y[i],x[j],y[j])+juli(x[k],y[k],x[g],y[g])+juli(x[h],y[h],x[j],y[j])+juli(x[k],y[k],x[h],y[h]);
if(s<=min)min=s;
}
}
}
}
}
}
}
}
}
printf("%.3f",min);
}