比赛总结
反思:上周比赛是21级的新生周赛,但是我太菜了,新生周赛都没有做几道题,而且这个比赛还不是考验算法功底,仅仅是思维题,伤心了……
以下是上周比赛的题目汇总:
探基不识火柴棒
#include <iostream>
using namespace std;
int main(){
int a1=2, b2=5, c3=5, d4=4, e5=5, f6=6, g7=3, h8=7, i9=6, j0=6, n, m, sum=0;
cin >> n;
if(n == 0){
sum = j0;
}else{
for(n; n>0; n/=10){
m = n%10;
if(m == 1)
sum += a1;
else if(m == 2)
sum += b2;
else if(m == 3)
sum += c3;
else if(m == 4)
sum += d4;
else if(m == 5)
sum += e5;
else if(m == 6)
sum += f6;
else if(m == 7)
sum += g7;
else if(m == 8)
sum += h8;
else if(m == 9)
sum += i9;
else if(m == 0)
sum += j0;
}
}
cout << sum;
return 0;
}
探姬同学的名字
#include <iostream>
using namespace std;
int main(){
int a, b, c;
cin >> a >> b;
c = a*b;
cout << c;
return 0;
}
探姬的晨跑计划
#include <iostream>
using namespace std;
int main(){
int month, day, num1, num2, sum;
cin >> month >> day >> num1 >> num2;
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(day==1 || day==3){
sum = (num1+num2)*13+num1;
}else if(day==2 || day==4){
sum = (num1+num2)*13+num2;
}else if(day==6 || day==5 || day==0){
sum = (num1+num2)*13;
}
break;
case 4:
case 6:
case 9:
case 11:
if(day==1 || day==3 || day == 5 || day==2 || day==4){
sum = (num1+num2)*13;
}else if(day == 0){
sum = (num1+num2)*12+num1;
}else if(day == 6){
sum = (num1+num2)*12+num2;
}
break;
case 2:
sum = (num1+num2)*12;
break;
}
cout << sum;
return 0;
}
探姬的购物车
待补题
探姬同学去上课
#include <iostream>
using namespace std;
int main(){
int f, n, num=0, x, time;
cin >> f >> n;
for(int i=0; i<n; i++){
cin >> x;
if(x<f) num++;
}
time = 2*(f-1)+3*num;
cout << time;
return 0;
}
探姬帮助同学解决问题
待补题
探姬环游世界
#include <iostream>
using namespace std;
int main(){
int n, a=1, b=1, c=0;
cin >> n;
for(int i=0; i<n; i++){
cin >> b;
if(a!=0 && b==0){
c++;
}
a = b;
}
cout << c;
return 0;
}
探姬粉丝众多
#include<iostream>
using namespace std;
int main()
{
int a, b, c;
int A, B, C;
cin >> a >> b >> c;
cin >> A >> B >> C;
if (B == b)
{
if (B == 1)
cout << C-1+A << endl;
else
cout << "sorry!" << endl;
}
else
{
double x = (C - c + A - a) / (b - B);
int op = int((b - 1) * x + c + a - 1);
cout << op << endl;
}
return 0;
}
探姬给同学们送糖果
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5+5;
int n,m,k;
int sx,sy;
struct node{
int x,y,dist;
};
unordered_map<int,int>st[N];
main(){
cin>>n>>m>>sx>>sy>>k;
queue<node>q;
if(sx-1>=1)q.push({sx-1,sy,1}),st[sx-1][sy]=1;
if(sx+1<=n)q.push({sx+1,sy,1}),st[sx+1][sy]=1;
if(sy-1>=1)q.push({sx,sy-1,1}),st[sx][sy-1]=1;
if(sy+1<=m)q.push({sx,sy+1,1}),st[sx][sy+1]=1;
int dx[8]={-1,-1,1,1,0,0,2,-2};
int dy[8]={-1,1,-1,1,2,-2,0,0};
int res=0;
while(q.size()){
auto t=q.front();
q.pop();
k--;
res+=t.dist*2;
if(k<=0){
cout<<res<<endl;
return 0LL;
}
for(int i=0;i<8;i++){
int a=t.x+dx[i],b=t.y+dy[i],dist=t.dist+2;
if(a<1||a>n||b<1||b>m)continue;
if(st[a][b])continue;
st[a][b]=1;
q.push({a,b,dist});
}
}
}
探姬同学@出题人
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int j;
for (int i = 1; i <= n; i++)
{
if (i == 1||i==n)
{
for (j = 1; j <= n; j++)
cout << '@';
cout << " ";
cout << '@';
for (j = 2; j <= n - 1;j++)
cout << ' ';
cout << '@';
cout << " ";
for (j = 1; j <= n - 2; j++)
cout << '@';
cout << endl;
}
else
{
for (j = 1; j <= n - i; j++)
cout << ' ';
cout << '@';
for (j = 1; j <= i - 1; j++)
cout << ' ';
cout << " ";
if (i != n / 2 + 1)
{
cout << '@';
for (j = 2; j <= n - 1; j++)
cout << ' ';
cout << '@';
}
else
{
for (j = 1; j <= n; j++)
cout << '@';
}
cout << " ";
cout << '@';
if (i == 2 || i == n - 1)
{
for (j = 1; j <= n - 3; j++)
cout << ' ';
cout << '@';
}
else
{
for (j = 1; j <= n - 2; j++)
cout << ' ';
cout << '@';
}
cout << endl;
}
}
return 0;