Java计算2017全国一卷12变式

Java计算2017全国一卷12变式,第1张

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 

运行结果

 

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5695138.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存