Codeforces Round #730 (Div. 2)
2021/7/8 6:06:18
本文主要是介绍Codeforces Round #730 (Div. 2),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
A: abs(a-b)必然是可取最大公约数的最大值,因为对于任何两个数a-p,b-p (a>=p&&b>=p) 假设k=__gcd(a-p,b-p)则(a-p)%k==0&&(b-p)%k==0。设a=n1*k+p,b=n2*k+p
所以b-a=n2*k-n1*k=k*(n2-n1)(n1!=n2) 因为n2-n1>=1,所以当n2-n1==1时k取最大值abs(b-a).
从下往上找0 ,k /k, 2k/ ... /nk,(n+1)k/...可知只需满足a,b 的最小值关于k的系数在k与min(a,b)的向下取整与向上取整之间
即 k/a*a<=a<=(k+a-1)/a*a 所以答案为min(a-k/a*a,(k+a-1)/a*a-a)
![](/images/baidian.png)
#include <bits/stdc++.h> #pragma GCC optimize(2) #define pb push_back #define re register using namespace std; using ll = long long ; const int N = 1e5+10; string yes="Yes\n",no="No\n"; //#define _IO_ void solve() { ll a,b; cin>>a>>b; if(a==b){ cout<<"0 0\n"; return ; } ll n=abs(a-b); if(a>b)swap(a,b); cout<<abs(a-b)<<" "<<min((a+n-1)/n*n-a,(a-a/n*n))<<"\n"; } int32_t main(int argc,char *argv[]) { #ifdef _IO_ freopen("in.txt","r",stdin); time_t time; #endif // _IO_ ios_base::sync_with_stdio(false); //cin.tie(0),cout.tie(0); int t=1; cin>>t; while(t--) solve(); #ifdef _IO_ time=clock(); cout<<time/1.0<<"ms\n"; #endif // _IO_ return 0; }A
B:把所有数平均分配即可
![](/images/baidian.png)
#include <bits/stdc++.h> #pragma GCC optimize(2) #define pb push_back #define re register using namespace std; using ll = long long ; const int N = 2e5+10; string yes="Yes\n",no="No\n"; //#define _IO_ ll a[N]; void solve() { 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+=a[i]; ll u=ans-ans/n*n; cout<<u*(n-u)<<"\n"; } int32_t main(int argc,char *argv[]) { #ifdef _IO_ freopen("in.txt","r",stdin); time_t time; #endif // _IO_ ios_base::sync_with_stdio(false); //cin.tie(0),cout.tie(0); int t=1; cin>>t; while(t--) solve(); #ifdef _IO_ time=clock(); cout<<time/1.0<<"ms\n"; #endif // _IO_ return 0; }B
D1:从0到n-1之间输出i^(max(i-1,0))直到输入x=1为止
保证答案不会改变利用异或消去的性质只需要把上一次输入错误的答案还原所以还需^(i-1)
![](/images/baidian.png)
#include <bits/stdc++.h> #pragma GCC optimize(2) #define pb push_back #define re register using namespace std; using ll = long long ; const int N = 2e5+10; string yes="Yes\n",no="No\n"; //#define _IO_ void solve() { int n,k; cin>>n>>k; int ans=0; for(int i=0;i<n;i++){ cout<<(ans^i)<<endl; int x;cin>>x; if(x)break; ans=i; } } int32_t main(int argc,char *argv[]) { #ifdef _IO_ freopen("in.txt","r",stdin); time_t time; #endif // _IO_ //ios_base::sync_with_stdio(false); //cin.tie(0),cout.tie(0); int t=1; cin>>t; while(t--) solve(); #ifdef _IO_ time=clock(); cout<<time/1.0<<"ms\n"; #endif // _IO_ return 0; }D
这篇关于Codeforces Round #730 (Div. 2)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-03微信支付提示下单账户与支付账户不一致-icode9专业技术文章分享
- 2024-07-03微信支付提示订单号重复-icode9专业技术文章分享
- 2024-07-02微服务启动nacos注册上去了,但是一直没有收到请求-icode9专业技术文章分享
- 2024-07-02如何检查文件的编码格式-icode9专业技术文章分享
- 2024-07-02sublime 更改编码格式-icode9专业技术文章分享
- 2024-06-30uniAPP 实现全屏左右滚动滚动的效果-icode9专业技术文章分享
- 2024-06-30如何在本地使用授权或插件-icode9专业技术文章分享
- 2024-06-30伪静态规则配置方法汇总-icode9专业技术文章分享
- 2024-06-29易优CMS安装常见问题汇总-icode9专业技术文章分享
- 2024-06-28易优新手必读安装教程-icode9专业技术文章分享