首页 > 其他分享 >题解:P8690 [蓝桥杯 2019 国 B] 填空问题

题解:P8690 [蓝桥杯 2019 国 B] 填空问题

时间:2024-08-20 17:37:51浏览次数:11  
标签:nx code vis int 题解 long 蓝桥 ny 填空

试题 \(\mathrm{A}\) : 平方序列

枚举 \(x\),通过 \(x^2-2019^2\) 求出它们的公差 \(c\),再计算 \(x^2+c\) 是否为完全平方数即可。

code

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
	for(int i=2020;1==1;i++){
	int c=i*i-2019*2019;
	int k=i*i+c;
	if(sqrt(k)*sqrt(k)==k){
		cout<<sqrt(k)+i;
		return 0;
	    }
	}
}

答案为 \(7020\)。

试题 \(\mathrm{B}\) : 质数拆分

埃筛筛出所有 $ 2 \sim 2019 $ 范围内的所有质数,再用背包求出答案即可。

code

#include<bits/stdc++.h>
#define int long long
using namespace std;
bool k[2020];
int h=1;
int p[1000],dp[2020];
void pd(){
	memset(k,0,sizeof(k));
	k[1]=k[0]=0;
	for(int i=2;i<=2019;i++){
		if(k[i]==1) continue;
		p[h]=i;
		h++;
		for(int j=i;j<=2019;j+=i){
			k[j]=1;
		}
	}
}
signed main(){
	pd();
	dp[0]=1;
	for(int i=1;i<h;i++){
		for(int j=2019;j>=p[i];j--){
			dp[j]+=dp[j-p[i]];
		}
	}
	cout<<dp[2019];
	return 0;
}

答案为 \(55965365465060\)。

试题 \(\mathrm{C}\) : 拼接

暴搜对角线上的所有点,计算所有可能,并统计其方案数。

code

#include<bits/stdc++.h>
#define int long long
using namespace std;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int ans=0;
bool vis[8][8];
void dfs(int x,int y){
	if(x==0||y==7){
		ans++;
		return;
	}
	for(int i=0;i<4;i++){
		int nx=dx[i]+x,ny=dy[i]+y;
		if(nx<0||nx>7||ny<=nx||ny>7||vis[nx][ny]==1) continue;
		vis[nx][ny]=1;
		dfs(nx,ny);
		vis[nx][ny]=0;
	}
}
signed main(){
	for(int i=0;i<=7;i++){
		memset(vis,0,sizeof(vis));
		dfs(i,i);
	}
	cout<<ans;
}

答案为 \(2444\)。

试题 \(\mathrm{D}\) : 求值

从 \(101\) 一直枚举到第一次出现 \(100\) 个因数的数字。

code

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
	for(int i=101;1==1;i++){
		int ans=0;
		for(int j=1;j*j<=i;j++){
			if(i%j==0){
				if(i/j!=j) ans+=2;
				else ans++;
			}
		}
		if(ans==100){
			cout<<i;
			return 0;
		}
	}
}

答案为 \(45360\)。

试题 \(\mathrm{E}\) : 路径计数

从 \((0,0)\) 暴搜正方形,和 \(\mathrm{C}\) 题相似。

  • 注意,不自交最少要走 \(4\) 步,判断步数时应为 \(k\ge4\)。

code

#include<bits/stdc++.h>
#define int long long
using namespace std;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int ans=0;
bool vis[7][7]; 
void dfs(int x,int y,int k){
	if(k>12) return;
	if(k>=4&&x==0&&y==0){
		ans++;
		return;
	}
	for(int i=0;i<4;i++){
		int nx=x+dx[i];
		int ny=y+dy[i];
		if(nx<0||ny<0||nx>5||ny>5||vis[nx][ny]) continue;
		vis[nx][ny]=1;
		dfs(nx,ny,k+1);
		vis[nx][ny]=0;
	}
}
signed main(){
	dfs(0,0,0);
	cout<<ans;
	return 0;
}

答案为 \(206\)。

本题的 AC code

#include<iostream>
using namespace std;
int main() {
    string ans [] = {
        "7020", 
        "55965365465060", 
        "2444",
        "45360",
        "206",
    };
    char T;
    cin >> T;
    cout << ans[T - 'A'] << endl;
    return 0;
}

标签:nx,code,vis,int,题解,long,蓝桥,ny,填空
From: https://www.cnblogs.com/bubble-sort/p/18369943

相关文章

  • Android逆向题解-攻防世界-Ph0en1x-100
    jeb反编译apk主要代码是if那个判断,getFlag取字符串用getSecret加密,和输入字符串encrypt加密后再getSecret加密,进行比较,两边同样都是getSecret加密,那比较可以简化成this.getFlag()==this.encrypt(s)。也就是输入字符经过encrypt加密后等于getFlag的字符串即可。protec......
  • ABC077D / ARC084B Small Multiple 题解
    AtCoderLuogu考虑数位和的来源:从\(1\)开始进行若干次\(\times10\)和\(+1\)操作可以得到任意正整数,此时\(+1\)操作的次数为其数字和。注意不能连续进行\(10\)次及以上\(+1\)操作。不难列出转移,设\(f(i)\)表示\(i\)的数字和,则:\(f(10i)=f(i)\)\(f(i+1)=......
  • [AtCoder - tdpc_game] :ゲーム 题解
    [AtCoder-tdpc_game]:ゲーム题解一道小清新\(dp\)题。定义\(dp_{i,j}\)为第一堆山还有\(i\)个物品,第二堆山还有\(j\)个物品,すぬけ君能取得物品的最大价值。由于只能取两座山最上面的物品,假设当前两座山分别有\({x,y}\)个物品,すぬけ君选后只能有两种情况,分别为\(d......
  • 题解:P10279 [USACO24OPEN] The 'Winning' Gene S
    思路建议升蓝。算法一考虑暴力。我们先枚举\(K,L\),考虑如何求解。直接枚举每一个\(K\)-mer,再枚举里面的每一个长度为\(L\)的子串,找到最大的子串并在起始部分打一个标记。最后直接看有几个地方被打标记就行。时间复杂度:\(O(n^4)\)。预计能过测试点\(1-4\)。算法二我们......
  • [题解]P4052 [JSOI2007] 文本生成器
    P4052[JSOI2007]文本生成器正难则反,我们发现用总字符串个数\(26^m\),减去不可读的字符串个数,就是答案。要使一个字符串不可读,就不能让任何模式串在其中出现。如果某个主串的第\(i\)位与自动机的节点\(j\)相匹配,那么如果状态\(j\)包含模式串(即有一个前缀是一个模式串),那么不管主......
  • 关系代数、函数依赖、Armstrong公理及软考试题解析
    注:本文面向于软考高级—系统架构设计师,具体来说是数据库部分,知识点偏零碎化。想要系统学习数据库原理的,可考虑去看《数据库原理》,清华大学出版社或其他出版社皆可。概述概念关系,就是二维表。特性:列不可分性:关系中每一列都是不可再分的属性,即不能出现如下复合属性行列无序性:......
  • P1543 [POI2004] SZP 题解
    P1543[POI2004]SZP题解传送门。题目简述有\(n\)个人,每个人都会监视另一个人,要求选出尽可能多的同学,使得选出的每一名同学都必定会被监视到。且选出的同学不可再监视其他人。思路简述因为任意一个人只能被另一个人管,那么就想到,如果没人管的同学就不能被选(不被监视)。若某......
  • 题解:[TJOI2018] 游园会
    所谓dp套dp,实际上就是在说求解一个dp的过程中,我们用另一个dp求解出他应该从某个状态转移到另一个状态。考虑一下这道题,首先求LCS的dp如下:\[dp_{i,j}=\max\{dp_{i-1,j},dp_{i,j-1},dp_{i-1,j-1}+[s_i==t_j]\}\]显然,当\(i\)固定的时候,\(dp_{i,j}\)是单调不降的,且相邻两......
  • 【LGR-196-Div.4】洛谷入门赛 #26 题A - H 详细题解--优化思路简洁代码(C++,Python语
    前言:    觉得这个比赛很有意思的,都是暴力题,涉及一些细节,难度比较适合刚学编程语言的,可以很好的锻炼基础还有手速,最后两题也是比较有意思,之后也准备更新atc的比赛题解和洛谷的一些高质量比赛题解(算法网瘾就是想参加各种比赛)   如果觉得有帮助,或者觉得我写的好,......
  • [NOI]2024 登山 题解
    好像在洛谷题解区里还没人和我做法一样,,?考场做法,只用到了倍增和线段树,感觉挺好写。考场上从开题到过题只用了2h。最底下有省流版(?)。以下是我考场里比较详细的思路,所以比较长。先考虑如何\(O(n^2)\)做,然后再想优化。容易先想到一个状态数是\(O(n^2)\)的DP,即记录起点,并将向......