当前位置:网站首页>Educational Codeforces Round 122 (Rated for Div. 2)

Educational Codeforces Round 122 (Rated for Div. 2)

2022-07-06 09:29:00 狗蛋儿l

A. Div. 7

题目:
You are given an integer n. You have to change the minimum number of digits in it in such a way that the resulting number does not have any leading zeroes and is divisible by 7.

If there are multiple ways to do it, print any of them. If the given number is already divisible by 7, leave it unchanged.

Input

3
42
23
377

Output

42
28
777

中文翻译:
给你n个数,改这些数的一个位数,让他变成7的整数,如果有多个答案,输出一个就行(百度翻译的是最小的位数,但是样例有一个不是我就没那么干)
代码:

#include <iostream>
using namespace std;
int main()
{
    
	int n;
	cin>>n;
	while(n--)
	{
    
		int q;
		cin>>q;
		if(q%7==0)
		{
    
			cout<<q<<endl;
		}
		else 
		{
    
			int k=q%10;
			q-=k;
			for(int i=1;i<=9;i++)
			{
    
				q+=i;
				if(q%7==0)
				{
    
					cout<<q<<endl;
					break;
				}
				else 
				{
    
					q-=i;
				}
			}
		}
	 } 
    return 0;
}

B. Minority

题目:
You are given a string s, consisting only of characters ‘0’ and ‘1’.

You have to choose a contiguous substring of s and remove all occurrences of the character, which is a strict minority in it, from the substring.

That is, if the amount of '0’s in the substring is strictly smaller than the amount of '1’s, remove all occurrences of ‘0’ from the substring. If the amount of '1’s is strictly smaller than the amount of '0’s, remove all occurrences of ‘1’. If the amounts are the same, do nothing.

You have to apply the operation exactly once. What is the maximum amount of characters that can be removed?

Input

4
01
1010101010111
00110001000
1

Output

0
5
3
0

中文翻译:
给你个字符串,如果0比1多删除所有的1,如果1比0多删除所有的0,按照翻译应该是如果相等就不进行操作,但我第一次交的wr了,然后对比了下样例答案,发现相同的话输出这个值-1就行。也可能是百度翻译的我没看懂。

代码:

#include <iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
    
	int n;
	cin>>n;
	while(n--)
	{
    
		string s;
		cin>>s;
		int l=0,y=0;
		for(int i=0;i<s.length();i++)
		{
    
			if(s[i]=='0')
			{
    
				l++;
			}
			else if(s[i]=='1')
			{
    
				y++;
			}
		}
		if(l==0||y==0)
		{
    
			cout<<0<<endl;
		}
		else if(l==y)
		{
    
			cout<<l-1<<endl;
		}
		else 
		{
    
			cout<<min(l,y)<<endl;
		}
	}
	
    return 0;
}

C. Kill the Monster

题目:
Monocarp is playing a computer game. In this game, his character fights different monsters.
A fight between a character and a monster goes as follows. Suppose the character initially has health hC and attack dC; the monster initially has health hM and attack dM. The fight consists of several steps:

  • the character attacks the monster, decreasing the monster’s health by
    dC;

  • the monster attacks the character, decreasing the character’s health
    by dM;

  • the character attacks the monster, decreasing the monster’s health by
    dC;

  • the monster attacks the character, decreasing the character’s health
    by dM;

  • and so on, until the end of the fight.

The fight ends when someone’s health becomes non-positive (i. e. 0 or less). If the monster’s health becomes non-positive, the character wins, otherwise the monster wins.

Monocarp’s character currently has health equal to hC and attack equal to dC. He wants to slay a monster with health equal to hM and attack equal to dM. Before the fight, Monocarp can spend up to k coins to upgrade his character’s weapon and/or armor; each upgrade costs exactly one coin, each weapon upgrade increases the character’s attack by w, and each armor upgrade increases the character’s health by a.

Can Monocarp’s character slay the monster if Monocarp spends coins on upgrades optimally?

Input

4
25 4
9 20
1 1 10
25 4
12 20
1 1 10
100 1
45 2
0 4 10
9 2
69 2
4 2 7

Output

YES
NO
YES
YES

中文翻译:
一个人打游戏,这个游戏是打死各种怪物,角色和怪物都有血条和攻击力,第一行是角色的血条和攻击力,第二行是怪物的,第三行是硬币,能提升的血的装备和能提升攻击力的装备,问能不能杀死这个怪物

代码:

#include <iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
    
	int n;
	cin>>n;
	while(n--)
	{
    
		
	long long int hc,dc,hm,dm;
	cin>>hc>>dc>>hm>>dm;
	long long int k,w,a;
	cin>>k>>w>>a;
 
	long long int nhc,ndc;
 
	for(long long int i=0;i<=k;i++){
    
		nhc = i* a +hc;
		ndc = (k-i)* w + dc;
		if((hm + ndc - 1)/ ndc <= (nhc + dm - 1)/ dm){
    
			cout<<"YES\n";
			break;
		}
		if(i==k)
		{
    
			cout<<"NO\n";
		} 
	}
 
	}
    return 0;
}
原网站

版权声明
本文为[狗蛋儿l]所创,转载请带上原文链接,感谢
https://blog.csdn.net/zranxi/article/details/122771088