Codeforces Round 937 (Div. 4) A-E

A题:Stair, Peak, or Neither?


AC代码:
cpp 复制代码
#include<iostream>
#include<cstring>

using namespace std;

int main()
{
	int t;
	cin >> t;
	while(t--)
	{
		int a,b,c;
		cin >> a >> b >> c;
		if(a < b && b < c)
		{
			puts("STAIR");	
		}
		else if(a < b && b > c)
		{
			puts("PEAK"); 
		}
		else
		{
			puts("NONE");	
		}	
	}
	return 0;
} 

B题:Upscaling


AC代码:
cpp 复制代码
#include<iostream>

using namespace std;

int main()
{
	int t;
	cin >> t;
	while(t--)
	{
		int n;
		cin >> n;
		if(n == 1)
		{
			printf("##\n##\n");
		}
		else
		{
			for(int i=1;i<=n;i++)
			{
				if(i%2!=0)
				{
					for(int j=1;j<=2;j++)
					{
						int a=0,b=0,w=0;
						for(int k=1;k<=2*n;k++)
						{
							if(a == 2) a = 0,w = 1;
							if(b == 2) b = 0,w = 0;
							if(a!=2&&!w)
							{
								printf("#");
								a++;
							}
							else if(b!=2&&w)
							{
								printf(".");
								b++; 
							}
						}
						puts("");
					}
				}
				else
				{
					for(int j=1;j<=2;j++)
					{
						int a=0,b=0,w=0;
						for(int k=1;k<=2*n;k++)
						{
							if(a == 2) a = 0,w = 1;
							if(b == 2) b = 0,w = 0;
							if(a!=2&&!w)
							{
								printf(".");
								a++;
							}
							else if(b!=2&&w)
							{
								printf("#");
								b++; 
							}
						}
						puts("");
					}
				}
			}
		}
	}
	return 0;		
} 

此题找规律即可


C题: Clock Conversion


AC代码:
cpp 复制代码
#include<iostream>
#include<map>
#include<cstring>

using namespace std;

int main()
{
	map<int,int> mp{{13,1},{14,2},{15,3},{16,4},{17,5},{18,6},{19,7},{20,8},{21,9},{22,10},{23,11},{0,12}};
	int t;
	cin >> t;
	while(t--)
	{
		string str;
		cin >> str;
		int hh = stoi(str.substr(0,2));
		int mm = stoi(str.substr(3,5));
		//cout << hh << ' ' << mm << endl;
		if(hh <= 12)
		{
			if(hh == 12) {
				printf("%02d:%02d PM\n",hh,mm);
				continue;
			}
			if(hh == 0) hh = mp[hh];
			printf("%02d:%02d AM\n",hh,mm);
		}
		else
		{
			hh = mp[hh];
			printf("%02d:%02d PM\n",hh,mm);
		} 
	}
	return 0;
}

此题直接暴力打表即可


D题: D. Product of Binary Decimals


AC代码:
cpp 复制代码
#include<iostream>

using namespace std;

//打表 
int num[31] = {10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111, 10000,
10001, 10010, 10011, 10100, 10101, 10110, 10111, 11000, 11001, 11010, 
11011, 11100, 11101, 11110, 11111, 100000};

bool check(int n)
{
	int c = 0;
	while(n)
	{
		c = n % 10;
		if(c != 0 && c != 1) return false;
		n = n / 10;
	}
	return true;
}

int main()
{
	int t;
	cin >> t;
	while(t--)
	{
		int n;
		cin >> n;
		int cop = n;
		if(n==1) 
		{
			puts("YES");
			continue;
		}
		int i;
		for(i=0;i<30;i++)
		{
			while(cop%num[i] == 0)
			{
				cop = cop / num[i];
			}
			if(!check(cop)) cop = n;
			else break;
		}
		if(i<30) puts("YES");
		else puts("NO");
	}
	return 0;
} 

此题同样打表即可


E题: Nearly Shortest Repeating Substring


思路

此题是一道字符串的+约数的题,时间复杂度为O(logN) * O(N),因为此题说s由x个k组成,S串中最多有一个字符不同,所以k肯定是S串长度的约数,所以只需要找S的约束串长度进行一 一 枚举比较即可


AC代码:
cpp 复制代码
#include<iostream>
#include<cstring>

using namespace std;

int n,ans;
string str;

bool check(int len)
{
	string s1,s2;
	//求出截取的字符串 
	for(int i=0;i<len;i++)
	{
		s1 += str[i];
	}
	//如果长度够用,往后再挪动len位 
	if(len < str.size())
	{
		for(int i=len;i<len*2;i++)
		{
			s2 += str[i]; 
		}
	}
	int cnt1=0;
	int cnt2=0;
	for(int i=0;i<str.size();i++)
	{
		int now = i % len;//周期为len所以直接%就好
		if(s1[now] != str[i])
		{
			cnt1++;
		}
		if(cnt1 > 1) break;
	}
	if(cnt1 <= 1) return true;
	for(int i=0;i<str.size();i++)
	{
		int now = i % len;//周期为len所以直接%就好 
		if(s2[now] != str[i])
		{
			cnt2++;	
		}
		if(cnt2 > 1) break;
	}
	if(cnt2 <= 1) return true;
	return false; 
}

int main()
{
	int t;
	cin >> t;
	while(t--)
	{
		bool flag = false;
		int len=0,one=0,two=0;
		cin >> n >> str;
		ans = n;//如果没有满足就输出字符串本身长度 
		for(int i=1;i*i<=n;i++)
		{
			if(n % i == 0)
			{
				//两个约数 
				one = i;
				two = n / i;
			}
			//这里是最短的情况 
			if(check(one))
			{
				cout << one << endl;
				flag = true;
				break;
			}
			if(one != two)
			{
				//two不一定是最短的所以要拿ans先存一下 
				if(check(two))
				{
					ans = two;
				}
			}
		}
		if(!flag) cout << ans << endl;
	}
	return 0;	
}

相关推荐
UestcXiye1 小时前
《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列
c++·计算机网络·ip·tcp
好奇龙猫2 小时前
【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】
人工智能·算法
霁月风2 小时前
设计模式——适配器模式
c++·适配器模式
sp_fyf_20242 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01
人工智能·深度学习·神经网络·算法·机器学习·语言模型·数据挖掘
ChoSeitaku3 小时前
链表交集相关算法题|AB链表公共元素生成链表C|AB链表交集存放于A|连续子序列|相交链表求交点位置(C)
数据结构·考研·链表
偷心编程3 小时前
双向链表专题
数据结构
香菜大丸3 小时前
链表的归并排序
数据结构·算法·链表
jrrz08283 小时前
LeetCode 热题100(七)【链表】(1)
数据结构·c++·算法·leetcode·链表
oliveira-time3 小时前
golang学习2
算法
咖啡里的茶i3 小时前
Vehicle友元Date多态Sedan和Truck
c++