kuang0606's blog

By kuang0606, 86 minutes ago, In English

对于同余问题 给定x可以进行x + k, |k — x|多次操作 于是就有了x + k 同余 y(mod k) |k — x| 同余 y(mod k); 于是要是两者相同就有相同最小值的同余,就是 x % k ; min(x,k — x); '''#include<bits/stdc++.h> using namespace std; int res(int x, int k) { x = x % k; return min(x, k — x); } void solve() { int n, k; cin >> n >> k; vector s(n); vector t(n); for(int i = 0;i < n;i++) cin >> s[i]; for(int i = 0;i < n;i++) cin >> t[i]; map<int, int> mp; for(int i = 0;i < n;i ++) { int x = res(s[i], k); mp[x]++; } for(int i = 0;i < n;i ++) { int x = res(t[i], k); mp[x]--; } for(auto it : mp) { if(it.second != 0) { cout << "NO" << endl; return; } } cout << "YES" << endl; } int main() { int t; //t = 1; cin >> t; while(t --) solve(); } '''

Full text and comments »

  • Vote: I like it
  • -5
  • Vote: I do not like it