当前位置: 首页 > java >正文

【蓝桥杯】 数字诗意

数字诗意

在诗人的眼中,数字是生活的韵律,也是诗意的表达。

小蓝,当代顶级诗人与数学家,被赋予了”数学诗人”的美誉。他擅长将冰冷的数字与抽象的诗意相融合,并用优雅的文字将数学之美展现于纸上。

某日,小蓝静坐书桌前,目光所及,展现着 n 个数字,它们依次为 a1,a2,…,an,熠熠生辉。

小蓝悟到,如果一个数能够以若干个(至少两个)连续的正整数相加表示,那么它就蕴含诗意。

例如,数字 6 就蕴含诗意,因为它可以表示为 1+2+3。

而 8 则缺乏诗意,因为它无法用连续的正整数相加表示。

小蓝希望他面前的所有数字都蕴含诗意,为此,他决定从这 n 个数字中删除一部分。

请问,小蓝需要删除多少个数字,才能使剩下的数字全部蕴含诗意?

输入格式

第一行包含一个整数 n,表示展示的数字个数。

第二行包含 n 个整数 a1,a2,…,an,表示展示的数字。

输出格式

输出一个整数,表示小蓝需要删除的数字个数,以使剩下的数字全部蕴含诗意。

数据范围

对于 30% 的评测用例,1≤n≤ 1 0 3 10^3 103,1≤ai≤ 1 0 3 10^3 103
对于所有评测用例,1≤n≤2× 1 0 5 10^5 105,1≤ai≤ 1 0 16 10^{16} 1016

输入样例:
3
3 6 8
输出样例:
1
样例解释

在样例中,数字 3 可以表示为 1+2,数字 6 可以表示为 1+2+3,数字 8 无法表示为连续的正整数相加,因此,需要删除的数字个数为 1。

【思路分析】

看到这一题我的第一直觉就是用二进制每一位的权值不能表示成连续的正整数相加

于是打表玩了一把

2 0 2^0 20 = 1 (x)

2 1 2 ^ 1 21 = 2 (x)

3 = 1 + 2 (√)

2 2 2^2 22 = 4 (x)

5 = 2 + 3 (√)

6 = 1 + 2 + 3 (√)

7 = 3 + 4(√)

2 3 2^3 23 = 8 (x)

貌似还真的是这样,那么也就是说只有包含奇数因子的数才可以分成连续的正整数相加

我们证明一下

设数N不含有奇数质因子,那么N可以表示为 N = 2 k 2^k 2k,其中k为正整数。

假设N可以分解为m个连续正整数的和,设这m个连续正整数中最小的数为n,则这m个连续正整数的和为:
S = n + ( n + 1 ) + ( n + 2 ) + . . . + ( n + m − 1 ) S = n + (n+1) + (n+2) + ...+(n + m -1) S=n+(n+1)+(n+2)+...+(n+m1)

等差数列求和
S = m ( 2 n + m − 1 ) 2 S = \frac{m(2n+m-1)}{2} S=2m(2n+m1)
如果m是奇数,那么 2n+m - 1是偶数 S = m ( 2 n + m − 1 ) 2 S = \frac{m(2n+m-1)}{2} S=2m(2n+m1)中,m为奇数因子,这与N不含有奇数质因子矛盾。

如果m是偶数,设 m = 2p(p为正整数),则 S = p(2n + 2p + 1)

因为2n + 2p + 1为奇数,若S = N = 2 k 2^k 2k (不含奇数因子的数),此时 2n + 2p + 1 为其中一个奇数因子,这与N不含有奇数因子矛盾。

所以证得如果一个数能够分解为连续个正整数相加,那么这个数一定包含奇数因子

import java.io.*;
import java.util.*;
public class Main {public static void main(String[] args) throws Exception {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));int n = Integer.parseInt(br.readLine());long res = 0;String[] data = br.readLine().split(" ");for(int i = 0; i < n; i++) {long d = Long.parseLong(data[i]);while(d % 2 == 0) {d /= 2;}if(d == 1) {res++;}}System.out.print(res);br.close();}
}
http://www.xdnf.cn/news/1546.html

相关文章:

  • 使用Python创建带边框样式的Word表格
  • 利用爬虫获取 1688 商品详情:高效的数据采集方法
  • sglang部署DeepSeek-R1-Distill-Qwen-7B
  • box-sizing: border-box的用法和作用
  • C++开发基础之调试宏的理解和应用
  • 3.2 Agent核心能力:感知、规划、决策与执行
  • MineWorld,微软研究院开源的实时交互式世界模型
  • MySQL安装步骤
  • 【AI大模型】推理大模型与预训练大模型:架构差异与认知范式的技术解构
  • SpringBoot入门实战(第六篇:项目接口-登录)
  • AXOP39062: 25MHz轨到轨输入输出双通道运算放大器
  • 计算机网络 第二章:应用层(三)
  • rpm包管理
  • NAS功能特点及应用场景
  • 工作记录9
  • AI大模型和人脑的区别
  • VAE-LSTM异常检测模型复刻报告
  • 前端笔记-Vue router
  • 自主可控鸿道Intewell工业实时操作系统
  • 量子跃迁:Vue组件安全工程的基因重组与生态免疫(完全体)
  • Spring AI - Redis缓存对话
  • 第五章:5.3 ESP32物联网应用:阿里云IoT平台与腾讯云IoT平台的数据上传与远程控制
  • 阻塞式队列
  • 非关系型数据库 八股文 Redis相关 缓存雪崩 击穿 穿透
  • Vite/Rollup 模块热更新
  • Springboot整合Redis主从
  • Java基础系列-HashMap源码解析2-AVL树
  • Java内存模型之JMM
  • NEUOJ网格路径
  • 本地服务器 Odoo 安装指南,并实现公网访问