栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java计算2017全国一卷12变式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java计算2017全国一卷12变式

原题

(2017•全国一卷)
    12.几位大学生响应国家的创业号召,开发了一款应用软件.
    为激发大家学习数学的兴趣,他们推出了“解数学题获取软
    件激活码”的活动.这款软件的激活码为下面数学问题的答案:
    已知数列1,1,2,1,2,4,1,2,4,8,1,2,4,8,16,…,
    其中第一项是,接下来的两项是,,再接下来的三项
    是,,,依此类推.求满足如下条件的最小整数N:N>100
    且该数列的前N项和为2的整数幂.那么该款软件的激活码是(   )

       

          A. 440     B. 330     C. 220    D. 110       答案:A

思考:用Java求出题中数列满足前N项和等于2的整数次幂的所有可行解(在-1之内)

并输出。

解题思路

写入代码的难点

①如何判断一个数是否是2的整数次幂

②注意基本数据类型的转换不要丢失精度

③由于数列中数据较大,应注意数据类型的大小

源代码
public class ChoiceQuestion12 {
	public static void main(String[] args) {
		//N为所求值
		//n为小于N的最大轮次
		//k过渡变量
		//SN为数列前N项和
		long N;
		long n=1L;
		long k;
		long SN;
		//当N=1959时,数列前N项和等于2^63-1,恰好是
		//long整型的最大值,由于计算时已超过,
		//所以应将计算范围规定在[1,1959),N为整数
		for(N=1L;N<1959;N++) {
			while((n+2)*(n+1)/2 

运行结果

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/694677.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号