蓝桥杯刷题第四天

思路:

       这道题很容易即可发现就是简单的暴力即可完成题目,我们只需满足所有数的和为偶数即可保证有满足条件的分法,同时也不需要存下每个输入的数据,只需要知道他是偶数还是奇数即可,因为我们只需要偶数个奇数搭配在一块看成是偶数即可,然后对应到上面我们就可以统计一组数据中奇数的个数就不需要多余的计算一个数据和,当奇数个数为0时,情况就是取和不取问题组合情况为2的偶数的个数次方,当奇数个数为奇数时,必不可能有满足条件的情况,当奇数个数为偶数且不为0时,每两个奇数即可配合成一个偶数,奇数的组合数为2的(奇数的个数-1)次方。ps:可以理解为先取出一个奇数,其余奇数为取或者不取那么其中一个子集有奇数个数的奇数另一个必有偶数个数的奇数,只需把这些排列组合(有2的(奇数的个数-1)次方种情况)列出并把取出的奇数放到只有奇数个数的奇数那个子集即可满足条件。

还有说因为奇数得成对出现所以2的n次方除2这个我理解不了我个人想法写到了上面的ps上

核心代码段:

代码:

import java.util.*;public class Main {public static void main (String []args) {int T;Scanner a = new Scanner(System.in);T=a.nextInt();int sum[] = new int[T];int n1=T;while(T-->0){int n;n = a.nextInt();//统计数量int b;//统计奇数和偶数的数目int nj,no;nj=no=0;for(int i=0;i<n;i++) {b=a.nextInt();if(b%2==0) {++no;}else {++nj;}}if(nj%2==0) {//将两个奇数合并为一个偶数,而n个奇数共有n-1种组合然后就是排列组合问题了最多有2的n次方种情况int num =nj+no;if(nj!=0) {num--; }sum[T]=1;
//    			 for(int i=0;i<num;i++) {
//    				 sum[T]=sum[T]*2%1000000007;
//    			 }sum[T]=(int) (Math.pow(2,num)%1000000007);}else {sum[T]=0;}	 }a.close();for(T=n1-1;T>=0;T--) {System.out.println(sum[T]);}}
}

做题反思:

1.蜜汁报错

蓝桥杯代码执行结果为段错误即有越界行为

2.题目有多组数据要输出下面两种都是可以的1.把数据存下来然后一起输出2.算出一个就输出。

fig:情况1

fig:情况2

3.pow返回值为double,先进行(int)会导致精度受损,固要先取余(蓝桥杯很多时候都要先取余输出低位的数值)再数据转换。

eg:

sum[T]=(int) (Math.pow(2,nj)%1000000007);和

sum[T]=(int) Math.pow(2,nj)%1000000007;

的区别在第一个是先取余再转int精度没有丢失,后者是先转int再取余精度在大范围数的时候double变int会精度丢失导致在数值比较大的情况下二者的计算结果有所区别。

上者可以20个结果都对,后者只对4个结果(数据范围小没损失精度)

前者:

后者:

4.区分好continue和break的区别

continue是结束该轮循环,但并没有跳出

break是结束循环即跳出循环

        我一开始直接这样导致一直找不到问题,因为就是遇到不满足情况的就跳出循环了,后面的组使用都没有去做,有点逆天了,敲得还是太少了

代码其实十几分钟就敲完了但一直没找出来问题,从晚上7.30到9.20才真正把这道题写完有点ass了

官网一个我觉得写得比较简洁的版本(内核是差不多的我进行了模仿去debug上面的代码而已):

import java.util.*;public class Main {public static void main (String []args) {int T;Scanner a = new Scanner(System.in);T=a.nextInt();long sum[] = new long[T];int n1=T;while(T-->0){int n;n = a.nextInt();//统计数量int b;//统计奇数和偶数的数目int nj,no;nj=no=0;for (int j = 0; j < n; ++j) {int e = a.nextInt();if (e % 2 == 0) ++no;else ++nj;}if (nj % 2 == 0)sum[T] = (int) (Math.pow(2, no) * Math.pow(2, nj == 0 ? 0 : nj - 1) % 1000000007);else sum[T] = 0;}a.close();for(T=n1-1;T>=0;T--) {System.out.println(sum[T]);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779748.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用命令行对RK开发板进行OpenHarmony版本烧录?

问题 在 OpenHarmony 自动化测试环境中&#xff0c;需要对流水线上的 RK 设备进行烧录&#xff0c;图形工具只能人工操作&#xff0c;那么有什么方法可以纯命令行进行自动化烧录呢&#xff1f; 思路 我们发现 RK 开发板实际是使用 upgrade_tool 的执行文件进行烧录的&#x…

公众号文章怎么写?手把手教你

公众号文章写作是讲究技巧和经验的&#xff0c;按照爆款文章的逻辑和结构走&#xff0c;你也能写出精彩的公众号推文&#xff0c;本文伯乐网络传媒将为你揭秘公众号文章的写作之道&#xff0c;纯干货&#xff0c;建议收藏起来慢慢看。 一、文章结构安排 1. 标题策划&#xff1…

使用Leaflet.rotatedMaker进行航班飞行航向模拟的实践

目录 前言 一、Leaflet的不足 1、方向插件 2、方向控制脚本说明 二、实时航向可视化实现 1、创建主体框架 2、飞机展示 3、位置和方位模拟 三、成果及分析 1、成果展示 2、方向绑定解读 总结 前言 众所周知&#xff0c;物体在空间中的运动&#xff08;比如飞行、跑步…

Windows11 使用 VirtualBox 安装创建 Ubuntu虚拟机

〇、背景 开发者大比例习惯都是Windows下编辑代码&#xff0c;比如使用Windows的Visual Studio Code进行代码的开发。但不管是AOSP还是鸿蒙开发&#xff0c;目前都不支持windows本地环境编译的&#xff0c;建议使用Ubuntu操作系统环境对源码进行编译。 因此&#xff0c;没有U…

redis集群配置(精华版):主从复制模式

主从复制模式 概念&#xff1a;作用&#xff1a;为什么使用集群&#xff1a;动手实操1、环境准备2、配置redis.conf配置文件3、再次查看主从节点信息4、验证主从模式 概念&#xff1a; ​ 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器…

Manjaro 安装全新 Linux 版微信,从此告别 Wine

目前已经基本上使用 Manjaro 来工作&#xff0c;而工作离不开微信作为日常的工作沟通工具。因为微信官方一直没有 Linux 版本的&#xff0c;所以之前都只能够使用 Wine 版本&#xff0c;然后踩了不少坑&#xff0c;但还算能勉强使用。 最近听说微信终于要发布 Linux 版本的&am…

网络层/数据链路层/其他协议/ARP/NAT

网络层 IP协议 前置认识 我们之前详谈过TCP协议&#xff0c;TCP协议主要是提供一种可靠的传输策略&#xff0c;但是并不能直接将报文发送给对方主机&#xff0c;而IP协议的本质就是提供一种将数据跨网络从A主机送到B主机的能力&#xff0c;而用户需要的是一种将数据 可靠的 跨…

【数据结构】新篇章 -- 顺序表

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…

银行监管报送系统介绍(八):银行业大额交易和可疑交易报告数据报送

依据《金融机构大额交易和可疑交易报告管理办法》&#xff1a; 第五条 金融机构应当报告下列大额交易&#xff1a; &#xff08;一&#xff09;当日单笔或者累计交易人民币5万元以上&#xff08;含5万元&#xff09;、外币等值1万美元以上&#xff08;含1万美元&#xff09;的…

AI大模型引领金融创新变革与实践【文末送书-46】

文章目录 AI大模型的定义与特点AI大模型在金融领域的应用 01 大模型在金融领域的 5 个典型应用场景02 大模型在金融领域应用所面临的风险及其防范03 AIGC 技术的科林格里奇困境04 金融机构使用 AIGC 技术的 4 条可能路径AIGC重塑金融&#xff1a;AI大模型驱动的金融变革与实践…

农学院智慧农业产教融合基地解决方案

第一章 背 景 1.1国际数字农业发展概况 随着全球信息化、智能化技术的快速发展&#xff0c;数字农业作为现代农业发展的重要方向&#xff0c;正日益受到国际社会的广泛关注。数字农业依托物联网、大数据、云计算、人工智能等现代信息技术&#xff0c;实现农业生产全过程的智能…

上采样技术在语义分割中的应用

目录 概要 一、概述 二、实现方法 1.转置卷积 2.反池化 3.双线性插值法 三、在经典网络中的的应用 1.U-Net 2.FCN 总结 概要 上采样是用于深度学习中提高语义分割精度的技术&#xff0c;可以实现图像放大和像素级别标注 一、概述 神经网络的基本结构为&#xff1a;…

我是如何在学术界占有一席之地的——专注于我的写作

罗伯特纽贝克 “作为一个移民&#xff0c;你是怎么发表这么多文章的&#xff1f;”意识到我不是以英语为母语的人&#xff0c;当我去年面试教职时&#xff0c;人们无数次问过这个问题。我知道披露我的挣扎不太可能让我找到工作&#xff0c;所以我会笑着说&#xff1a;“我喜欢…

【c 语言 】malloc函数详解

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

LeetCode 热题 100 题解(一):哈希部分

《LeetCode热题 100》 经过了两个多月&#xff0c;终于刷完了代码随想录的题目&#xff0c;现在准备开始挑战热题一百了&#xff0c;接下来我会将自己的题解以博客的形式同步发到力扣和 c 站&#xff0c;希望在接下来的征程中与大家共勉&#xff01; 题组一&#xff1a;哈希 题…

day22.二叉树part08

day22.二叉树part08 235.二叉搜索树的最近公共祖先 原题链接 代码随想录链接 思路&#xff1a;因为本题是二叉搜索树&#xff0c;利用它的特性可以从上往下进行递归遍历树&#xff0c;这里需要理解一点就是如果遍历到的一个节点发现该节点的值正好位于节点p和节点q的值中间…

Git实现提交代码自动更新package.json版本号

此文章主要讲诉如何通过git提交代码来自动更新我们的版本号&#xff0c;也可以指定固定分支才能更新 只要涉及到package version的项目都可以&#xff0c;例如&#xff1a;Vue、React、Node等等 前提是当前项目已经关联了Git仓库 一、编写我们的Node更新版本逻辑&#xff0c;名…

QSplashScreen

以前打红警的时候进入游戏界面会有一个启动界面&#xff0c;比如美国是有伞兵&#xff0c;英国有狙击手&#xff0c;韩国有黑鹰战机的一些介绍&#xff0c;这些就是启动界面&#xff0c;就是由QSplashScreen这个类来实现的。 QSplashScreen 是 Qt 框架中的一个类&#xff0c;用…

jsp用户登录界面

主界面 <% page contentType"text/html;charsetUTF-8" language"java" %> <html> <head><meta charset"UTF-8"><title>登录界面</title> </head> <body bgcolor"#faebd7"> <form…

HarmonyOS实战开发-UIAbility和自定义组件生命周期

介绍 本文档主要描述了应用运行过程中UIAbility和自定义组件的生命周期。对于UIAbility&#xff0c;描述了Create、Foreground、Background、Destroy四种生命周期。对于页面和自定义组件描述了aboutToAppear、onPageShow、onPageHide、onBackPress、aboutToDisappear五种生命周…