1:报数(100分)
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
bool judge7(int b)
{
while(b!=0){
if(b%10==7)return true;
b/=10;
}
return false;
}
int main(){
int n;
int a[4]={0};
cin>>n;
int flag=0;
int j=1;
for(int sum=n;sum>0;sum--)
{
if(j%7==0||judge7(j))
{
a[flag%4]++;
sum++;
}
j++;
flag++;
}
for(int i=0;i<4;i++)cout<<a[i]<<endl;
return 0;
}
2:回收站选址(100分)
#include<bits/stdc++.h>//时间复杂度O(n+n+5)
#include<iostream>
using namespace std;
struct node{
int x;
int y;
}a[1010];
map<int,map<int,int> >r;//用x,y映射,映射不成功map返回0;cpp把>>认成移位,需加空格
//不能直接开数组,必须用map,要不然内存出问题
int main()
{
int n;
cin>>n;
int m[5]={0};
for(int i=0;i<n;i++){
cin>>a[i].x>>a[i].y;
r[a[i].x][a[i].y]=1;
}
for(int i=0;i<n;i++){
if(r[a[i].x][a[i].y+1]&&r[a[i].x][a[i].y-1]&&r[a[i].x-1][a[i].y]&&r[a[i].x+1][a[i].y])
{
int sum=0;
sum=r[a[i].x-1][a[i].y-1]+r[a[i].x-1][a[i].y+1]+r[a[i].x+1][a[i].y-1]+r[a[i].x+1][a[i].y+1];
m[sum]++;
}
}
for(int i=0;i<5;i++)cout<<m[i]<<endl;
return 0;
}