Educational Codeforces Round 70 (Rated for Div. 2)

今天这场都是字符串,打到自闭┭┮﹏┭┮

A - You Are Given Two Binary Strings…

找出第二个字符串最后面1的位置,然后再从第一个字符前面往前找第一个1出现的位置。

#include <iostream>
#include <cmath>
using namespace std ; 
int main(){
	int t ; 
	cin >> t ; 
	while(t --){
		string a , b ; 
		cin >> a >> b ; 
		int x = 0 ; 
		
		for (int i = b.length()-1 ; i >= 0 ; -- i){
			if (b[i] == '1')	break ; 
			++ x ; 
		}
		int ans = 0 ; 
		for (int i = a.length()-x-1 ; i >= 0 ; -- i){
			if (a[i] == '1')	break ; 
			++ ans ;
		}
		cout << ans << endl ; 
	}
	return 0 ; 
}
B - You Are Given a Decimal String…

参考博客:题解1 题解2

#include <iostream>
#include <string> 
#include <cstring>
using namespace std ; 
const int INF = 0x3f3f3f3f ; 
const int N = 10 ; 
int dis[N][N] , ans[N][N] ;
string s ;  
int cal(int x , int y){	//计算 x-y计算器
	memset(dis,INF,sizeof(dis)) ; 
	for (int i = 0 ; i < 10 ; ++ i){
		dis[i][(i+x)%10] = 1 ; 		//对于i它只能转移到(i+x)%10 或者是(i+y)%10 的点 其他无法到达为INF
		dis[i][(i+y)%10] = 1 ;
	}
	// 计算从 i 到 j 的最短路 
	for (int k = 0 ; k < 10 ; ++ k)
		for (int i = 0 ; i < 10 ; ++ i)
			for (int j = 0 ; j < 10 ; ++ j)
				if (dis[i][j] > dis[i][k] + dis[k][j])
					dis[i][j] = dis[i][k] + dis[k][j] ; 
	
	int ans = 0 ;
	int len = s.length() ;  
	for (int i = 0 ; i < len-1 ; ++ i){
		int a = s[i] - '0' ; 
		int b = s[i+1] - '0' ; 
		if (dis[a][b] == INF)	return -1 ; 
		else
			ans += dis[a][b] - 1 ; 	//累加从s[i] 到 s[i+1] 中间要插入几个数 
	} 
	return ans ; 
}
int main(){
	cin >> s ; 
	for (int i = 0 ; i < 10 ; ++ i){
		for (int j = 0 ; j < 10 ; ++ j){
			cout << cal(i,j) << " " ; 
		}
		cout << endl ; 
	}	
	return 0 ; 
} 
D - Print a 1337-string…

题意:给出n要求输出一串字符串中含有n个“1337” ;
题解:中间有n个3 则有(c n中取2中组合方式,即x*(x-1)/2 种),如果没在这个范围内可以每隔两个3插入一个7,就会多出一种。所以找出x*(x-1)/2 最接近n的x,然后不够的插入7即可。

#include <cstdio>
int main(){
	int t ; 
	scanf ("%d",&t) ;
	while(t --){
		int n ; 
		scanf ("%d",&n) ;
		if (n == 1){
			printf ("1337\n") ;
			continue ;
		} 
		int x = 1 ;		//x为中间 3 的个数 
		while(x*(x-1)/2 <= n)	++ x ; 
		-- x ; 	
		n = n - x*(x-1)/2 ;
		printf ("133") ;
		while(n --)		printf ("7") ; 
		x -= 2 ;
		while(x --)		printf ("3") ;
		printf ("7\n") ; 
	}
	return 0 ; 
}
"educational codeforces round 103 (rated for div. 2)"是一个Codeforces平台上的教育性比赛,专为2级选手设计评级。以下是有关该比赛的回答。 "educational codeforces round 103 (rated for div. 2)"是一场Codeforces平台上的教育性比赛。Codeforces是一个为程序员提供竞赛和评级的在线平台。这场比赛是专为2级选手设计的,这意味着它适合那些在算法和数据结构方面已经积累了一定经验的选手参与。 与其他Codeforces比赛一样,这场比赛将由多个问题组成,选手需要根据给定的问题描述和测试用例,编写程序来解决这些问题。比赛的时限通常有两到三个小时,选手需要在规定的时间内提交他们的解答。他们的程序将在Codeforces的在线评测系统上运行,并根据程序的正确性和效率进行评分。 该比赛被称为"educational",意味着比赛的目的是教育性的,而不是针对专业的竞争性。这种教育性比赛为选手提供了一个学习和提高他们编程技能的机会。即使选手没有在比赛中获得很高的排名,他们也可以从其他选手的解决方案中学习,并通过参与讨论获得更多的知识。 参加"educational codeforces round 103 (rated for div. 2)"对于2级选手来说是很有意义的。他们可以通过解决难度适中的问题来测试和巩固他们的算法和编程技巧。另外,这种比赛对于提高解决问题能力,锻炼思维和提高团队合作能力也是非常有帮助的。 总的来说,"educational codeforces round 103 (rated for div. 2)"是一场为2级选手设计的教育性比赛,旨在提高他们的编程技能和算法能力。参与这样的比赛可以为选手提供学习和进步的机会,同时也促进了编程社区的交流与合作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值