第一题
201912-1 报数
这一题简单的。一个cnt记录当前报出了多少个数,一个i记录当前该报哪个数。有pass情况就统计
#include <iostream>
using namespace std;
int isPass(int num){
int a,b;
a=num;
if(num%7==0) return 1;
while(a){
b=a%10;
if(b==7) return 1;
a=a/10;
}
return 0;
}
int main()
{
int n;
cin>>n;
int p[4]={};
int i=1,cnt=0;
while(cnt!=n){
if(isPass(i)==1){
int num=i%4;
if(num==0) p[3]++;
else p[num-1]++;
}
else ++cnt;
i++;
}
for(int i=0;i<4;i++) cout<<p[i]<<endl;
}
也许可以尝试把num转成字符串,用相关函数判断字符串里是否有7。
第二题
201912-2 回收站选址
模拟两层筛选,注意审题
#include <iostream>
using namespace std;
struct Pos{
long x;
long y;
}p[1000];
int main()
{
int n;
cin>>n;
int num[5]={};
for(int i=0;i<n;i++){
cin>>p[i].x>>p[i].y;
}
for(int i=0;i<n;i++){
int m=0;
for(int j=0;j<n;j++){
if(j==i) continue;
if(p[j].x==p[i].x){
if(p[j].y==p[i].y-1) m++;
if(p[j].y==p[i].y+1) m++;
}
if(p[j].y==p[i].y){
if(p[j].x==p[i].x-1) m++;
if(p[j].x==p[i].x+1) m++;
}
}
if(m==4){
m=0;
for(int j=0;j<n;j++){
if(p[j].x==p[i].x-1){
if(p[j].y==p[i].y-1) m++;
if(p[j].y==p[i].y+1) m++;
}
if(p[j].x==p[i].x+1){
if(p[j].y==p[i].y-1) m++;
if(p[j].y==p[i].y+1) m++;
}
}
num[m]++;
}
}
for(int i=0;i<5;i++) cout<<num[i]<<endl;
return 0;
}
二刷
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
struct Pos{
long x;
long y;
}p[1001];
bool cmp(struct Pos a,struct Pos b){
if(a.x<b.x) return true;
else if(a.x==b.x&&a.y<b.y) return true;
else return false;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++) cin>>p[i].x>>p[i].y;
sort(p,p+n,cmp);
int ans[5]={};
if(5<=n){
for(int i=2;i<n-2;i++){
int f1=0,f2=0;
int left=i-1,right=i+1;
long x=p[i].x,y=p[i].y;
while(p[right].x<=x+1&&right<n){
if(p[right].x==x&&p[right].y==y+1) f1++;
if(p[right].x==x+1&&p[right].y==y-1) f2++;
if(p[right].x==x+1&&p[right].y==y) f1++;
if(p[right].x==x+1&&p[right].y==y+1) f2++;
right++;
}
while(x-1<=p[left].x&&0<=left){
if(p[left].x==x&&p[left].y==y-1) f1++;
if(p[left].x==x-1&&p[left].y==y+1) f2++;
if(p[left].x==x-1&&p[left].y==y) f1++;
if(p[left].x==x-1&&p[left].y==y-1) f2++;
left--;
}
if(f1==4) ans[f2]++;
}
}
for(int i=0;i<5;i++) cout<<ans[i]<<endl;
return 0;
}
优化!