- 李红强 的博客
Day 13
- @ 2025-7-29 10:39:28
T3
题目要求:给定和,找出最大满足以下要求的
- 小于10^N^,且的每位数字都一致
- 为的倍数
数学知识:同余定理
我们只需要循环遍历当整除时更新答案
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("repeat.in","r",stdin);
freopen("repeat.out","w",stdout);
int n,m;
cin>>n>>m;
int idx=0,x;
for(int i=1;i<=9;i++){
int sum=0;
for(int j=1;j<=n;j++){
sum=(sum*10+i)%m;
if(sum==0&&j>=idx){
x=i;
idx=j;
}
}
}
if(idx==0) cout<<-1;
else{
while(idx--) cout<<x;
}
return 0;
}
T4
题目要求:在二维平面中有个点,第个点的坐标为 求最大曼哈顿距离
曼哈顿距离
1.
其余3种情况与其类似 那么我们可以对于被减数取最大值,对于减数取最小值,相减的值为最大值
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+20;
int n;
long long sum1[N],sum2[N];
int main() {
freopen("lenth.in","r",stdin);
freopen("lenth.out","w",stdout);
cin>>n;
for (int i=1;i<=n;i++) {
int x,y;
cin>>x>>y;
sum1[i]=x+y;
sum2[i]=x-y;
}
sort(sum1+1,sum1+1+n);
sort(sum2+1,sum2+n+1);
cout<<max(sum1[n]-sum1[1],sum2[n]-sum2[1]);
return 0;
}