A.
全部负数处理到前面,全部都能变成正数
// Problem: A. Turtle Puzzle: Rearrange and Negate
// Contest: Codeforces - Codeforces Round 929 (Div. 3)
// URL: https://codeforces.com/contest/1933/problem/A
// Memory Limit: 256 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
// /l、
// (゚、 。 7
// l、 ~ヽ
// じしf_, )ノ
#include<bits/stdc++.h>
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
const int N = 2e6 + 9;
int a[N];
void Lan(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
ll ans=0;
for(int i=1;i<=n;i++){
ans+=abs(a[i]);
}
cout<<ans<<'\n';
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int q;
cin>>q;
while (q--) {
Lan();
}
return 0;
}
B.
如果是和%1,看有没有mod1的a[i]去掉即可
如果是和%2,直接+1即可
其他都需要操作2次
// Problem: B. Turtle Math: Fast Three Task
// Contest: Codeforces - Codeforces Round 929 (Div. 3)
// URL: https://codeforces.com/contest/1933/problem/B
// Memory Limit: 256 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
// /l、
// (゚、 。 7
// l、 ~ヽ
// じしf_, )ノ
#include<bits/stdc++.h>
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
const int N = 2e6 + 9;
int a[N];
void Lan(){
int n;
cin>>n;
bool rem1=false;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]%3==1){
rem1=true;
}
}
ll ans=0;
for(int i=1;i<=n;i++){
ans+=a[i];
}
if(ans%3==0){
cout<<0<<'\n';
return;
}
if(ans%3==1 && rem1){
cout<<1<<'\n';
}else if(ans%3==2){
cout<<1<<'\n';
}else{
cout<<2<<'\n';
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int q;
cin>>q;
while (q--) {
Lan();
}
return 0;
}
C.
暴力小心超过ll
// Problem: C. Turtle Fingers: Count the Values of k
// Contest: Codeforces - Codeforces Round 929 (Div. 3)
// URL: https://codeforces.com/contest/1933/problem/C
// Memory Limit: 256 MB
// Time Limit: 5000 ms
//
// Powered by CP Editor (https://cpeditor.org)
// /l、
// (゚、 。 7
// l、 ~ヽ
// じしf_, )ノ
#include<bits/stdc++.h>
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
const int N = 2e6 + 9;
int a[N];
ll qmi(ll a,ll b){
ll res=1;
while(b){
if(b&1){
res=res*a;
}
b>>=1;
a=a*a;
}
return res;
}
void Lan(){
ll a,b,l;
cin>>a>>b>>l;
//范围
//l== kmax, kmin
//k=l/(qmi,qmi);
//pow(2,20)==1e6;
set<int> st;
int t=0;
for(int i=0;i<=20;i++){
t=qmi(a,i);
if(t>l){//超过ll
break;
}
for(int j=0;j<=20;j++){
t=qmi(a,i)*qmi(b,j);
if(t>l){//超过ll
break;
}
if(l%(t)==0){
int k=l/(t);
st.insert(k);
}
}
}
cout<<st.size()<<'\n';
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int q;
cin>>q;
while (q--) {
Lan();
}
return 0;
}
D.
全部%gcd(a[n]),如果有2个1必然不行
// Problem: D. Turtle Tenacity: Continual Mods
// Contest: Codeforces - Codeforces Round 929 (Div. 3)
// URL: https://codeforces.com/contest/1933/problem/D
// Memory Limit: 256 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
// /l、
// (゚、 。 7
// l、 ~ヽ
// じしf_, )ノ
#include<bits/stdc++.h>
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
const int N = 2e6 + 9;
int a[N],b[N];
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
// 3 3 6 9 -> 1 1 2 3 NO
void Lan(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int g=a[1];
for(int i=2;i<=n;i++){
g=gcd(g,a[i]);
}
for(int i=1;i<=n;i++){
b[i]=a[i]/g;
}
ll ans=0;
for(int i=1;i<=n;i++){
ans+=(b[i]==1);
}
if(ans>1){
cout<<"NO"<<'\n';
}else{
cout<<"YES"<<'\n';
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int q;
cin>>q;
while (q--) {
Lan();
}
return 0;
}
E.
前缀和二分
CodeforcesRound929(Div.3)解题技巧:数组操作、模运算与整数计数问题,
本文介绍了五道Codeforces竞赛中的编程题目,涉及负数处理、对3取余、整数计数、最大公约数以及前缀和的使用,展示了在不同问题中如何运用基础算法解决复杂度不高的数学逻辑问题。
660

被折叠的 条评论
为什么被折叠?



