首页 > 其他分享 >暑假牛客多校第三场 2023-7-24

暑假牛客多校第三场 2023-7-24

时间:2023-07-25 13:35:18浏览次数:49  
标签:24 typedef 奇数 质数 多校 偶数 include LL 第三场

未补完


A. World Fragments I


算法:构造

做法:x中某一个数位选一个数,这个数有可能是0或者是1。求x变到y的最小数,这个数有可能是负数,要取绝对值。
注意如果x0,那么从x中取的数就只有0了,除非y也等于0,否则输出-1

code
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <deque>
#include <cmath>
#include <string>
#include <set>
#define fir first
#define sec second
using namespace std;

typedef long long LL;
typedef pair<int, int> PII;
typedef pair<double, int> PDI;
typedef pair<double, double> PDD;
int dx[4] = { -1, 1, 0, 0 }, dy[4] = { 0, 0, -1, 1 };

const int N = 1000010;

void solve()
{
	LL ans = 0, a = 0, b = 0;
	LL two = 1;
	string x, y;
	cin >> x >> y;
	reverse(x.begin(), x.end()), reverse(y.begin(), y.end());

	if (x.size() == 1 && x[0] == '0' && (y[0] == '1' || y.size() > 1))
	{
		cout << -1 << endl;
		return;
	}

	for (int i = 0; i < x.size(); i++)
	{
		if (x[i] == '1')a += two;
		two = 2 * two;
	}

	two = 1;
	for (int i = 0; i < y.size(); i++)
	{
		if (y[i] == '1')b += two;
		two = 2 * two;
	}

	cout << abs(a - b) << endl;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);

	solve();

	return 0;
}

 

H. Until the Blue Moon Rises


算法:歌德巴赫猜想
1.哥德巴赫猜想的现代陈述为:任一大于5的整数都可写成三个质数之和。
2.强哥德巴赫猜想(强哥猜):即任一大于2的偶数都可写成两个质数之和。(未被证明,但是同时也没有被推翻,即在本体的范围内强哥猜成立)
3.弱哥德巴赫猜想(弱哥猜): 任何一个大于5的奇数都能被表示成三个奇质数的和。(一个质数可以被多次使用)(已经被证明)

做法:
首先如果 \(n = 1\) 时,如果单独这个数是质数则对,否则错。

当 \(n = 2\) 时,当两个数的和为偶数且大于等于4,则对,否则错。当两个数的和为奇数时,由于奇数必定由偶数加上奇数组合而成。所以这两个数必定有一个数是偶数,有一个是奇数。先考虑偶数,由于2是偶数中唯一 一个质数,所以偶数必定需要为2,那么奇数就为总和减去2,我们再判断这个总和是不是为质数就可以了。

当 \(n = 3\) 时,首先我们要保证所有数的总和要大于等于 \(2 * n\),因为最小的质数是2,当所有数都是2时才能出现全部是质数的情况。在这个前提下,我们把所有数都变为2,那么总和减去 \(2 * n\) 即为剩下的数,我们设为 \(x\)。如果 \(x\) 是偶数,我们可以全部都加到数组的一个数上,即为 \(2 + x\),结果设为 \(y\), \(y\) 必然也是偶数。我们在找数组中的一个数,由于数组的数都是2,那么 \(2 + y\) 也必然是偶数,且大于4,可以分解成两个质数。如果 \(x\) 是奇数,那么我们把奇数的1移到数组的一个数上,3也为质数。\(x\) 变为了偶数。这时情况和上面 \(x\) 是偶数的情况一样,必定能得到数组中的数都为质数。

借鉴博客

code
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <deque>
#include <cmath>
#include <string>
#include <set>
#define fir first
#define sec second
using namespace std;

typedef long long LL;
typedef pair<int, int> PII;
typedef pair<double, int> PDI;
typedef pair<double, double> PDD;
int dx[4] = { -1, 1, 0, 0 }, dy[4] = { 0, 0, -1, 1 };

const int N = 1010;

LL n;
LL w[N];

bool is_prime(LL x)
{
	if (x == 1)return false;

	for (LL i = 2; i <= x / i; i++)
	{
		if (x % i == 0)
			return false;
	}
	return true;
}

void solve()
{
	LL sum = 0;
	cin >> n;
	for (int i = 1; i <= n; i++)cin >> w[i], sum += w[i];

	if (n == 1 && is_prime(w[1]))
	{
		cout << "Yes" << endl;
		return;
	}
	else if(n == 1 && !is_prime(w[1]))
	{
		cout << "No" << endl;
		return;
	}

	if (n == 2 && sum % 2 == 0)
	{
		if (sum >= 4)cout << "YES" << endl;
		else cout << "No" << endl;
		return;
	}
	else if (n == 2 && sum % 2 != 0)
	{
		if (is_prime(sum - 2))cout << "Yes" << endl;
		else cout << "No" << endl;
		return;
	}

	if (sum >= n * 2)cout << "Yes" << endl;
	else cout << "No" << endl;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);

	solve();

	return 0;
}

标签:24,typedef,奇数,质数,多校,偶数,include,LL,第三场
From: https://www.cnblogs.com/dkdklcx/p/17579047.html

相关文章

  • 牛客暑假多校 2023 第三场
    写在前面比赛地址:https://ac.nowcoder.com/acm/contest/57357。发生了这种事……气槽她气得吐槽了啊!以下按个人向难度排序。A签到。除非\(x=0\)否则可以调整为任意数,步数即两数之差。///*By:Luckyblock*/#include<cmath>#include<cstdio>#include<cctype>#incl......
  • HJ67 24点游戏算法
    1.题目读题 HJ67 24点游戏算法 考查点 2.解法思路 代码逻辑 具体实现importjava.util.Scanner;importjava.util.Arrays;publicclassHJ67{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);whil......
  • 20230724练习总结
    CF627F这个题的题面翻译其实就已经把做法提示得很明显了。每一次操作相当于是把\(0\)移动到相邻的节点上。考虑不加边,那接判断\(0\)移到后是否相同即可。现在要加一条边,可以先把\(0\)移动到位,判断是否相等。可以观察到如果加一条边影响的应该是一个环——顺移一个位置......
  • 牛客多校2023 第三场
    A签到,注意$0$的特判#include<bits/stdc++.h>usingnamespacestd;longlongx,y;intmain(){strings1,s2;cin>>s1;cin>>s2;intLen1=s1.length();intLen2=s2.length();for(inti=0;i<Len1;i++)......
  • 2023.7.24
    今天有事,所以也没看多少。看了ret2VDSO,ctfwiki上讲的很简略,原理甚至只有“待补充”几个字。我去看了最下面贴的两个链接,第一个链接全是英文,有点不太想看,第二个链接和ctfwiki上的一模一样。感觉好像这块和之前的ret2reg差不多,都不是特别重要的部分。明天去看SROP......
  • 牛客多校 Day3
    H哥德巴赫J诈骗A签到D要么全\(0\),要么全\(1\)B不得不说我真的纯纯SB真的。考场做法是先转成概率,然后就是计算长度大于等于\(i\)概率之和。\(f(i,j,0/1)\)前\(i+j\)个位置填\(i\)个小于等于\(n\)的数,\(j\)个大于\(n\)的数,最后一段是上升/下降的......
  • 7.24打卡
    L1-096谁管谁叫爹#include<bits/stdc++.h>usingnamespacestd;intdigit_sum(intnum){intsum=0;while(num){sum+=(num%10);num/=10;}returnsum;}intmain(){intN;inti,j;intA,B;cin>>N;for(i=0;i<N;......
  • 7.24日
    今日无事发生。早起,洗漱,早饭,肉饼,手机,iPad,休息。午饭,躺平,手机,iPad。晚饭,换屋,整理,思考,B站,搜索,那岩。夜宵,瞭望,俯视,畅想,回忆。明日计划暂未确定。睡觉。今天也是无事发生的一天呢......
  • 2023-7-23,24 乱七八糟
    昨天开了分享会,跟学长们打了场awd,上去不知道干啥,库库挨揍,然后放了一晚上假今天复现,瞅着大佬的wp往上抄作业,然后打了点自己搭的靶场,也没啥好说的有个感觉很好使的绕过php的disablefunction的方法,明天想起来的话就写一下可惜绕过了disable也没能拿到最高权,感觉啥也干不了......
  • 2023年7月24日 天气:晴
        今天早上起来背了10个单词,然后出去打了两个小时的羽毛球,然后看了一小时的电视剧,再就是练了一个小时的字,然后学习了一个小时的java,最后看了一会儿构建之法,编程了一个小时的C语言。  明天打算早上起来看一小时的英语课本,然后出去玩一个小时,再看一小时的java课本,然后......