(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运行结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)