试题 B: 含 2 天数
#include<bits/stdc++.h>
using namespace std;
int n=0,m[]{0,12,28,12,12,12,12,12,12,12,12,12,31};
int isrun(int y){
if(y%100!=0&&y%4==0||y%400==0)return 1;
return 0;
}
int toto(int y){
while(y>0){
if(y%10==2)return 1;
y/=10;
}
return 0;
}
int main(){
int s=179;
//cout<<s;
for(int i=1900;i<=9999;++i){
if(isrun(i))n++;
if(toto(i))n+=365;
else n+=179;
}
cout<<n;
return 0;
}
试题 H: 答疑
#include<bits/stdc++.h>
using namespace std;
int s,a,n;
struct stu{
int c,e,m;
};
struct stu x[1009];
bool cmp(stu x,stu y){
if(x.m!=y.m)return x.m<y.m;
return x.e<y.e;
}
int main(){
cin>>n;
int t=0,ans=0;
for(int i=0;i<n;++i){
cin>>s>>a>>x[i].e;
x[i].c=s+a;
x[i].m=x[i].c+x[i].e;
}
sort(x,x+n,cmp);
for(int i=0;i<n;++i){
t+=x[i].c;
ans+=t;
t+=x[i].e;
}
cout<<ans;
return 0;
}
试题 E: 玩具蛇
#include<bits/stdc++.h>
using namespace std;
int n=0,s[5][5]{0},c=0;
int fx[]{-1,0,1,0},fy[]{0,1,0,-1};
int ok(int x,int y){
if(x>=0&&x<4&&y>=0&&y<4&&!s[x][y])return 1;
return 0;
}
void dfs(int x,int y,int num){
if(num==16){
c++;
for(int i=0;i<n;++i){
for(int j=0;j<n;++j){
cout<<setw(3)<<s[i][j];
}cout<<'\n';
}return;
}
int tx,ty;
for(int i=0;i<4;++i){
tx=x+fx[i];ty=y+fy[i];
if(ok(tx,ty)){
s[tx][ty]=num+1;
dfs(tx,ty,num+1);
s[tx][ty]=0;
}
}
}
int main(){
n=4;
for(int i=0;i<n;++i){
for(int j=0;j<n;++j){
s[i][j]=1;
dfs(i,j,1);
s[i][j]=0;
}
}
cout<<c;
return 0;
}