栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2022年5月21日刷题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022年5月21日刷题

晚上要打ABC,赶紧热身一下。

目录

1684A - Digit Minimization

1684B - Z mod X = C

1108B - Divisors of Two Integers

1612B - Special Permutation


1684A - Digit Minimization

点击打开题目

题目大意:

十进制表示法中有一个不带零的整数n。爱丽丝和鲍勃正在用这个整数玩游戏。爱丽丝先开始。他们轮流玩游戏。

轮到Alice时,她必须交换位于不同位置的整数的任意两位数字。轮到鲍勃时,他总是去掉整数的最后一位。当只剩下一个数字时,游戏结束。

如果爱丽丝玩得很好,你必须找到她最终能得到的最小整数。

题目思路:如果是两位,直接输出个位,否则输出最小数字即可。

AC代码:

#include
using namespace std;
int main(){
	cin.tie(0);
	ios::sync_with_stdio(0);
	int tc; cin>>tc;
	while(tc--){
		string s; cin>>s;
		if(s.size()==2) cout< 

  

1684B - Z mod X = C

点击打开题目

题目大意:

给你三个正整数a,b,c(a

x mod y=a,

y mod z=b,

z mod x=c。

这里,p mod q表示p除以q的余数。可以表明,对于此类约束,答案总是存在的。

题目思路:将z设定为最小值,那么x=a+b+c,y=b+c,y=c.数学题。

AC代码:

#include
using namespace std;
int main(){
	cin.tie(0);
	ios::sync_with_stdio(0);
	int tc; cin>>tc;
	while(tc--){
		long long a,b,c; cin>>a>>b>>c;
		cout<


1108B - Divisors of Two Integers

点击打开题目

点击查看博主透露的部分测试点

题目大意:

最近您收到了两个正整数x和y。您忘记了它们,但您记得一个无序列表,其中包含x的所有除数(包括1和x)和y的所有除数(包括1和y)。如果d同时是数字x和y的除数,则列表中会出现两次d。

例如,如果x=4,y=6,那么给定的列表可以是列表的任何排列[1,2,4,1,2,3,6]。一些可能的列表是:[1,1,2,4,6,3,2]、[4,6,1,1,2,3,2]或[1,6,3,2,4,1,2]。

您的问题是恢复适当的正整数x和y,它们将产生相同的除数列表(可能是不同的顺序)。

可以保证答案存在,即给定的除数列表对应于一些正整数x和y。

题目思路:

方法一:第一个是最大值,第二个是去掉第一个的所有因数后的最大值。

方法二:第一个是最大值,第二个是第一个重复的因数或不是因数(最大)。

AC代码:

方法一:

#include
using namespace std;
int main(){
	cin.tie(0);
	ios::sync_with_stdio(0);
	int n; cin>>n;
	setse;
	int a[130];
	for(int i=0;i>a[i];
	sort(a,a+n);
	cout<

方法二:

#include
using namespace std;
int main(){
	cin.tie(0);
	ios::sync_with_stdio(0);
	int n; cin>>n;
	setse;
	int a[130];
	for(int i=0;i>a[i];
	sort(a,a+n);
	cout<=0;i--){
		if(se.count(a[i])==0&&a[n-1]%a[i]==0){
			se.insert(a[i]);
		}
		else if(se.count(a[i])==1&&a[n-1]%a[i]==0){
			cout<

1612B - Special Permutation

点击打开题目

题目大意:

长度为n的置换是一个数组p=[p1,p2,…,pn],其中包含从1到n(包括1到n)的每个整数,且只包含一次。例如,p=[4,2,6,5,3,1]是长度为6的置换。

给你三个整数n,a和b,其中n是偶数。打印长度为n的任何排列,左半部分所有元素中的最小值等于a,右半部分所有元素中的最大值等于b。如果不存在这种排列,请打印-1。

题目思路:构造题,分别定义两个数组构造两个部分,先考虑b的,再考虑两数之间的。

AC代码:

#include
using namespace std;
#define pb push_back
int main(){
	cin.tie(0);
	ios::sync_with_stdio(0);
	int tc; cin>>tc;
label:
	while(tc--){
		int n,a,b; cin>>n>>a>>b;
		vectorl;
		vectorr;
		l.pb(a); r.pb(b);
		for(int i=1;i<=n;i++){
			if(i!=a&&i!=b){
				if(ib){
					cout<<-1<n/2||l.size()>n/2){
			cout<<-1< 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/920422.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号