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

蓝桥杯-数字诗意

问题描述

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

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

某日,小蓝静坐书桌前,目光所及,展现着 n 个数字,它们依次为 a1,a2,…,an​,熠熠生辉。小蓝悟到,如果一个数能够以若干个(至少两个)连续的正整数 相加表示,那么它就蕴含诗意。例如,数字 6 就蕴含诗意,因为它可以表示为 1+2+3。而 8 则缺乏诗意,因为它无法用连续的正整数相加表示。

小蓝希望他面前的所有数字都蕴含诗意,为此,他决定从这 n 个数字中删除一部分。请问,小蓝需要删除多少个数字,才能使剩下的数字全部蕴含诗意?

输入格式

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

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

输出格式

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

样例输入

3
3 6 8

样例输出

1

样例说明

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

评测用例规模与约定

对于 30% 的评测用例,1≤n≤10的3次方,1≤ai≤10的3次方。

对于所有评测用例,1≤n≤2×10的5次方,1≤ai≤10的16次方。


题解:

1.先输出下哪些数需被删除,即不能够以若干个(至少两个)连续的正整数 相加表示的数

 public static void main(String[] args) {
        for (long i = 1; i < 1000; i++) {
            if (!J(i))//输出不能被连续正整数相加表示的
                System.out.println(i);
        }
    }
    public static boolean J(long n) {
        for (long i = 1; i < n; i++) {
            long next = i + 1;
            long sum = i + next;
            while (sum < n) {
                next++;
                sum += next;
            }
            if (sum == n)
                return true;
        }
        return false;
    }

输出结果:

  

显然,被删的数都为2的n次方

2.那么如何判断一个数为2的n次方

(1)若a为2的n次方,则a&&(a-1)==0(例如8的二进制为1000,1000&&0111==0)

if((a&(a-1))==0)//==的运算级比&高,&运算要加小括号
   return true;

(2)若a为2的n次方,a不断除2每次都余0,且最后结果为1

 while (a % 2 == 0) 
     a /= 2;
 if (a == 1)
     return true;

3.最终代码

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //在此输入您的代码...
        int count=0;
        int n=sc.nextInt();
        for(int i=1;i<=n;i++)
        {
           long j=sc.nextLong();
           if((j&(j-1))==0)
           count++;
        }
        System.out.println(count);
        sc.close();
    }
}

相关文章:

  • MTK-Android12-13 屏幕永不休眠功能实现
  • 落子宜宾:全方位解析树莓集团现状布局
  • Vue3+Vite+TypeScript+Element Plus开发-06.Header响应式菜单缩展
  • AIDD-人工智能药物设计-TCMP-12个公开的中药数据库
  • window上 docker使用ros2开发并usbip共享usb设备
  • C# 中的 nameof 表达式:用法详解与最佳实践
  • Vue3 + Vite + TS,使用 Web Worker,web worker进阶 hooks
  • Qt中自定义插件和库(1)
  • 深入理解Docker Bridge网络模式:原理与实践指南
  • leetcode_203. 移除链表元素_java
  • 网络安全法规与入门指南
  • 【Android Studio】第一个Android程序 运行流程 程序调试 | 实操实战图文详细
  • net9.0 中System.Text.Json序列化和反序列化
  • spring-cloud-starter-dubbo使用说明
  • TypeScript:从类型工具到前端系统设计的跃迁
  • Python和MicroPython的解释器区别
  • 【算法学习计划】回溯 -- 综合题目(上)
  • 深入理解 Handler、Looper 、 MessageQueue和 HandlerThread
  • LINUX的使用(1)-挂载云硬盘
  • setInterval问题以及前端如何实现精确的倒计时
  • 一台云服务器做多个网站/定制网站
  • 网站制作换下面友情连接/媒体宣传推广方案
  • 十堰外贸网站建设/郑州专业seo推荐
  • wordpress做的网站吗/百度信息流账户搭建
  • 做ps找图的网站/全球网站排名查询
  • 自己做的网站怎么链接火车头采集/国内新闻