Good Bye 2022: 2023 is NEAR

Posted 向夕阳Salute

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Good Bye 2022: 2023 is NEAR相关的知识,希望对你有一定的参考价值。

C. Koxia and Number Theory

cf链接

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]modpx!=(pa[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,...,p1的话就说明无解,不存在x使gcd=1
所以我们可以记录每个 p 上 x 不能等于数的个数,大于等于 p 就说明无解 所以我们可以记录每个p上x不能等于数的个数,大于等于p就说明无解 所以我们可以记录每个px不能等于数的个数,大于等于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 题解

Good Bye 2019 C. Make Good

Good Bye 2015 A

Good Bye 2019 C. Make Good (异或的使用)

Good Bye 2018(待更新)

Good Bye 2019