GESP C++二级编程题-2025年03月
B4259 [GESP202503 二级] 等差矩阵
题目描述
小 A 想构造一个 nnn 行 mmm 列的矩阵,使得矩阵的每一行与每一列均是等差数列。小 A 发现,在矩阵的第 iii 行第 jjj 列填入整数 i×ji \times ji×j,得到的矩阵能满足要求。你能帮小 A 输出这个矩阵吗?
输入格式
一行,两个正整数 n,mn, mn,m。
输出格式
共 nnn 行,每行 mmm 个由空格分割的整数,表示小 A 需要构造的矩阵。
输入输出样例 #1
输入 #1
3 4
输出 #1
1 2 3 4
2 4 6 8
3 6 9 12
说明/提示
对于所有测试点,保证 1≤n,m≤501\leq n,m \leq 501≤n,m≤50。
#include <iostream>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cout<<(i+1)*(j+1)<<" ";
}
cout<<endl;
}
return 0;
}
B4260 [GESP202503 二级] 时间跨越
题目描述
假设现在是 yyy 年 mmm 月 ddd 日 hhh 时而 kkk 小时后是 y′y'y′ 年 m′m'm′ 月 d′d'd′ 日 h′h'h′ 时,对于给定的 y,m,d,h,ky, m, d, h, ky,m,d,h,k,小杨想请你帮他计算出对应的 y′,m′,d′,h′y', m', d', h'y′,m′,d′,h′ 是多少。
输入格式
输入包含五行,每行一个正整数,分别代表 y,m,d,h,ky, m, d, h, ky,m,d,h,k。
输出格式
输出四个正整数,代表 y′,m′,d′,h′y', m', d', h'y′,m′,d′,h′。
输入输出样例 #1
输入 #1
2008
2
28
23
1
输出 #1
2008 2 29 0
说明/提示
对于全部数据,保证有 2000≤y≤30002000 \leq y \leq 30002000≤y≤3000,1≤m≤121 \leq m \leq 121≤m≤12,1≤d≤311 \leq d \leq 311≤d≤31,0≤h≤230 \leq h \leq 230≤h≤23,1≤k≤241 \leq k \leq 241≤k≤24。数据保证为合法时间。
闰年判断规则
- 普通闰年:年份能被 444 整除,但不能被 100100100 整除。
- 世纪闰年:年份能被 400400400 整除。
满足以上任意一条规则的年份就是闰年,否则是平年。
#include <iostream>
using namespace std;
int main(){
int y,m,d,h,k;
cin>>y>>m>>d>>h>>k;
h+=k;
if(h>=24){
h-=24;
d+=1;
int days=0;
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)days=31;
else if(m==4||m==6||m==9||m==11)days=30;
else if(m==2){
if((y%4==0&&y%100!=0)||y%400==0)days=29;
else days=28;
}
if(d>days){
d-=days;
m+=1;
if(m>12){m=1;y+=1;}
}
}
cout<<y<<" "<<m<<" "<<d<<" "<<h<<endl;
return 0;
}