Codeforces Round #720 (Div. 2)(A-B)
程序员文章站
2024-03-21 13:14:46
...
总结写前:一把掉回*,大概就是A看翻译看错了然后wa了一个小时还碰巧遇到“手速场”?体验极差x.
A. Nastia and Nearly Good Numbers
题意:
给你两个整数A,B,要求x,y,z,且三个数要求满足:
①x+y=z;②(x%a0&&x%b!=0)&&(y%a0&&y%b!=0)
③z%a0&&z%b0
如果存在这样的数就输出YES和x,y,z.
否则输出NO.
思路:
既然前面两个加数必须得是a的倍数,且不能是b的倍数
其实不难想到只要(a*(b-1))%b一定不等于0
因为b和b-1互质,所以找两个相邻的即可。
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
int n,i,j,t;
cin>>t;
while(t--){
int a,b;
cin>>a>>b;
if(b==1){
scNO;
}
else {
scYES;
cout<<a*(b-1)<<" "<<a*(b+1)<<" "<<a*b*2<<endl;
}
}
return 0;
}
B. Nastia and a Good Array
题意:
一个长度为n的数组,最多执行n次改动,要使整个数组gcd(a[i-1],a[i])=1,改动是自己选择两个数,然后选择数组里的两个数进行交换,要求是选择的两个数的最小值要等于被选择的两个数的较小值。
思路:
两种解法:
①:考试时的思路,找到一个大于1e9的素数,然后间隔放,但是没想到找的复杂度这么小=。=,还去找了一个随机大素数
②:看了一个巨佬的思路,在数组里找个最小的值,然后从左往右依次修改。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 1e5 + 1000;
int a[maxn];
signed main()
{
int n, i, j, t, k, x, y;
cin >> t;
int m1=1408448233;
while (t--) {
cin >> n;
for (i = 1; i <= n; i++) {
cin >> a[i];
}
int d1=n%2==0?n/2:n/2+1;
if(n==1) {
cout<<0<<endl;continue;
}
cout<<d1<<endl;
for(i=2;i<=n;i+=2){
cout<<i-1<<" "<<i<<" "<<m1<<" "<<min(a[i-1],a[i])<<endl;
a[i]=min(a[i-1],a[i]);
a[i-1]=m1;
}
if(n%2!=0){
cout<<n-1<<" "<<n<<" "<<min(a[n-1],a[n])<<" "<<m1<<endl;
a[n-1]=min(a[n-1],a[n]);
a[n]=m1;
}
}
return 0;
}
上一篇: 一次导入2w行的表格,并通过注解校验字段
下一篇: easyexcel使用和遇到的问题点
推荐阅读
-
Codeforces Round #720 (Div. 2)题解
-
Codeforces Round #720 (Div. 2)(A-B)
-
Codeforces Round #720 (Div. 2)AB题
-
Codeforces Round #720 (Div. 2)
-
Codeforces Round #720 (Div. 2)
-
Codeforces Round #446 (Div. 2) B(数论,模拟,gcd,最大公约数)
-
C. Balanced Bitstring(字符串+思维) Codeforces Round #668 (Div. 2)
-
Codeforces Round #668 (Div. 2)-C. Balanced Bitstring
-
Codeforces Round #610 (Div. 2) E The Cake Is a Lie(拓扑排序)
-
Educational Codeforces Round 55 (Rated for Div. 2)总结