您的位置:首页 > 游戏 > 手游 > 网站设计咨询_app推广方式有哪些_网站建设山东聚搜网络_seo技术服务外包

网站设计咨询_app推广方式有哪些_网站建设山东聚搜网络_seo技术服务外包

2025/7/3 22:33:57 来源:https://blog.csdn.net/2301_80727984/article/details/147053453  浏览:    关键词:网站设计咨询_app推广方式有哪些_网站建设山东聚搜网络_seo技术服务外包
网站设计咨询_app推广方式有哪些_网站建设山东聚搜网络_seo技术服务外包

问题描述

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

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

某日,小蓝静坐书桌前,目光所及,展现着 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();}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com