Good Bye 2022: 2023 is NEAR
Posted 向夕阳Salute
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Good Bye 2022: 2023 is NEAR相关的知识,希望对你有一定的参考价值。
C. Koxia and Number Theory
g
c
d
(
a
[
i
]
+
x
,
a
[
j
]
+
x
)
=
=
1
gcd(a[i] + x, a[j] + x) = = 1
gcd(a[i]+x,a[j]+x)==1
辗转相减法
g
c
d
(
a
[
i
]
+
x
,
a
[
j
]
+
x
)
=
g
c
d
(
a
b
s
(
a
[
i
]
−
a
[
j
]
)
,
a
[
j
]
+
x
)
gcd(a[i] + x, a[j] + x) = gcd(abs(a[i]-a[j]), a[j]+x)
gcd(a[i]+x,a[j]+x)=gcd(abs(a[i]−a[j]),a[j]+x)
也就是说如果最大公约数不等于一,那么肯定是
a
b
s
(
a
[
i
]
−
a
[
j
]
)
的因子
也就是说如果最大公约数不等于一,那么肯定是abs(a[i] - a[j])的因子
也就是说如果最大公约数不等于一,那么肯定是abs(a[i]−a[j])的因子
假设因子为p
(
a
[
j
]
+
x
)
的因子中不能有
p
,也就是
(
a
[
j
]
+
x
)
m
o
d
p
=
=
0
(a[j] + x)的因子中不能有p,也就是(a[j] + x)modp == 0
(a[j]+x)的因子中不能有p,也就是(a[j]+x)modp==0
x
!
=
−
a
[
j
]
m
o
d
p
即
x
!
=
(
p
−
a
[
j
]
m
o
d
p
)
m
o
d
p
x != -a[j]modp 即 x!= (p -a[j]modp)modp
x!=−a[j]modp即x!=(p−a[j]modp)modp
如果
x
!
=
0
,
1
,
2
,
3
,
.
.
.
,
p
−
1
的话就说明无解,不存在
x
使
g
c
d
=
1
如果x!= 0,1,2,3,...,p-1的话就说明无解,不存在x使gcd=1
如果x!=0,1,2,3,...,p−1的话就说明无解,不存在x使gcd=1
所以我们可以记录每个
p
上
x
不能等于数的个数,大于等于
p
就说明无解
所以我们可以记录每个p上x不能等于数的个数,大于等于p就说明无解
所以我们可以记录每个p上x不能等于数的个数,大于等于p就说明无解
只需要前一百的因子就够了
因为
n
小于
100
,所以最多只会有
100
个不同的
a
[
j
]
所以插入的数量也小于
100
,所以只需要小于
100
的因子就够了,大于一百的也肯定不满足,因为数量不够
因为n小于100,所以最多只会有100个不同的a[j]所以插入的数量也小于100,所以只需要小于100的因子就够了,大于一百的也肯定不满足,因为数量不够
因为n小于100,所以最多只会有100个不同的a[j]所以插入的数量也小于100,所以只需要小于100的因子就够了,大于一百的也肯定不满足,因为数量不够
代码
#include<iostream>
#include<cstring>
#include<algorithm>
#include<set>
#include<unordered_map>
const int N = 1e5 + 10;
typedef long long ll;
using namespace std;
int pri[N];
bool vis[N];
ll arr[N];
int t, n;
int cnt;
void init_prime()
for(int i = 2; i < 110; i ++)
if(!vis[i])
pri[cnt++] = i;
for(int j = 0; j < cnt; j ++)
if(pri[j] * i > 110) break;
vis[pri[j]*i] = true;
if(i % pri[j] == 0) break;
int main()
unordered_map<int, set<int>> num;
unordered_map<ll,int> sam;
init_prime();
cin >> t;
while(t--)
bool f = 0;
num.clear();
sam.clear();
cin >> n;
for(int i = 0; i < n; i ++)
cin >> arr[i];
sam[arr[i]] ++;
if(sam[arr[i]] >= 2)
f = 1;
for(int i = 0; i < n; i ++)
for(int j = i+1; j < n; j ++)
ll t = abs(arr[i] - arr[j]);
for(int k = 0; k < cnt; k ++)
if(t % pri[k] == 0)
ll tem = pri[k];
num[tem].insert((tem - arr[j]%tem)%tem);
if(num[tem].size() == tem)
f = 1;
break;
if(f) puts("NO");
else puts("YES");
return 0;
Good Bye 2022: 2023 is NEAR 题解
Koxia and Whiteboards
#include<bits/stdc++.h>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,0x3f,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define MEMx(a,b) memset(a,b,sizeof(a));
#define INF (0x3f3f3f3f)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %lld\\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) \\
For(j,m-1) cout<<a[i][j]<<' ';\\
cout<<a[i][m]<<endl; \\
#pragma comment(linker, "/STACK:102400000,102400000")
#define ALL(x) (x).begin(),(x).end()
#define gmax(a,b) a=max(a,b);
#define gmin(a,b) a=min(a,b);
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b)return (a*b)%F;
ll add(ll a,ll b)return (a+b)%F;
ll sub(ll a,ll b)return ((a-b)%F+F)%F;
void upd(ll &a,ll b)a=(a%F+b%F)%F;
inline int read()
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) if (ch=='-') f=-1; ch=getchar();
while(isdigit(ch)) x=x*10+ch-'0'; ch=getchar();
return x*f;
ll a[101010];
int main()
// freopen("A.in","r",stdin);
// freopen(".out","w",stdout);
int T=read();
while(T--)
int n=read(),m=read();
if(n==1)
For(i,n+m) cin>>a[i];
cout<<a[n+m]<<endl;
continue;
priority_queue<ll, vector<ll>, greater<ll> > q;
For(i,n)
q.push(read());
For(i,m) q.pop(),q.push(read());
ll ans=0;
while(!q.empty()) ans+=q.top(),q.pop();
cout<<ans<<endl;
return 0;
Koxia and Permutation
#include<bits/stdc++.h>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,0x3f,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define MEMx(a,b) memset(a,b,sizeof(a));
#define INF (0x3f3f3f3f)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %lld\\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) \\
For(j,m-1) cout<<a[i][j]<<' ';\\
cout<<a[i][m]<<endl; \\
#pragma comment(linker, "/STACK:102400000,102400000")
#define ALL(x) (x).begin(),(x).end()
#define gmax(a,b) a=max(a,b);
#define gmin(a,b) a=min(a,b);
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b)return (a*b)%F;
ll add(ll a,ll b)return (a+b)%F;
ll sub(ll a,ll b)return ((a-b)%F+F)%F;
void upd(ll &a,ll b)a=(a%F+b%F)%F;
inline int read()
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) if (ch=='-') f=-1; ch=getchar();
while(isdigit(ch)) x=x*10+ch-'0'; ch=getchar();
return x*f;
ll a[101010];
int main()
// freopen("A.in","r",stdin);
// freopen(".out","w",stdout);
int T=read();
while(T--)
int n=read(),m=read();
int b=n,a=1;
For(i,n) if(i%m==0)
cout<<a++<<' ';
else cout<<b--<<' ';
cout<<endl;
return 0;
Koxia and Number Theory
#include<bits/stdc++.h>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])
#define Lson (o<<1)
#define Rson ((o<<1)+<以上是关于Good Bye 2022: 2023 is NEAR的主要内容,如果未能解决你的问题,请参考以下文章
Good Bye 2022: 2023 is NEAR 题解