T1:金盏花
传送门
直接暴力枚举前6位的值即可,记得开long long
#include<bits/stdc++.h>
using namespace std;
#define int long long
int y,z,ans=1e18;
signed main(){
scanf("%lld%lld",&y,&z);
for(int i=100000;i<=999999;i++){
int x=i*1000000+y;
ans=min(ans,abs(x-z));
}
printf("%lld\n",ans);
return 0;
}
T2:红草莓
传送门
稍微手算几组就可以发现对于ai,就是将所有为gcd(ai,n)的倍数的位置染为蓝色
那么根据这个性质写出代码发现只有70pts,只需要加一个判断ai之前是否出现过,如果出现过直接输出0(显然)
即可通过
复杂度应该是<=O(nlogn)的:
对于不重复的a数组(不防a1 < a2 < ... < an)
复杂度为O(n/a1 + ... + n/an)<=O(n/1 + ... + n/n)=O(nlogn)
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[500005];
int gcd(int x,int y){
if(y==0)return x;
else return gcd(y,x%y);
}
bool vis[500005],p[500005];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)scanf("%d",&a[i]),a[i]=gcd(a[i],n);
for(int i=1;i<=m;i++){
if(p[a[i]]){
printf("%d ",0);
continue;
}
int sum=0;
for(int j=0;j<n;j+=a[i])
if(!vis[j]){
vis[j]=1;
sum++;
}
p[a[i]]=1;
printf("%d ",sum);
}
puts("");
return 0;
}
标签:gcd,int,long,Div.2,ai,两题,LGR,500005
From: https://www.cnblogs.com/kentsbk/p/17455288.html