首页 > 试题广场 >

以下程序的输出是:

[单选题]
以下程序的输出是:
#include <iostream>
using namespace std;
unsigned int f(unsigned int n) 
{
    if (n == 0[n == 1) {
        return 1;
    }

    return f(n-1) + f(n-2);
}
void count(int n) {
    unsigned int tmp = n -((n >>1)8033333333333) - ((n >>2) &011111111111);
    std::cout <<((tmp +(tmp >>3)) &030707070707) %63 << std::endl;
}


  • 1,6
  • 2,5
  • 2,4
  • 3,5
  • 4,7
  • 1,1
AK48的答案,不懂斐波那契数列和统计1的数量也无所谓。一步步算一下也可以出结果,缺点是耗时,但这道题算出第一个是3,就可以选答案了。注意>>是右移运算符,前面补0
发表于 2017-08-08 17:08:25 回复(0)
D   3,5
选D
首先第一个f函数  是个斐波那契数列 可知  f(7)=21   f(9)=55
下边count函数 是用来统计n的二进制表示中1个数量。count函数的原理 你可以去查MIT HAKM 算法。
所以 答案是3 5
发表于 2017-03-04 10:55:42 回复(9)
其中(n>>2)&011111111111中01111111111是数的八进制表示方法
发表于 2017-08-22 20:56:17 回复(0)
java里二进制以0b开头,八进制以0开头,十六进制以0x开头


发表于 2017-08-25 14:02:20 回复(0)
有错误,8033333333333?是&033333333333吧
发表于 2022-08-23 20:25:24 回复(0)
端着手机看,这种口算题做起来有意思么
发表于 2020-10-20 10:41:31 回复(0)
虽然题目太长我看不下去,但是我会猜啊
发表于 2019-06-28 17:16:05 回复(0)
难道就我一个拿脑袋算了半天发现算错了之后才乱选的?直到口算八进制转十六进制才崩溃😂
发表于 2019-09-04 14:48:30 回复(0)
首先 斐波那契数列  f(n)= f(n-1) +f(n-2) 
可知  f(0)=1   f(1)=1    f(2) = f(1) + f(0) = 2   f(3)=f(2)+f(1)=3 以此类推 f(4) = 5  ,  
f(5) = 8  , f(6) = 13  , f(7) = 21  , f(8) = 34   f(9) = 55.  
count函数参考 MIT HAKM 详细算法
https://blog.csdn.net/msquare/article/details/4536388
发表于 2018-08-08 19:06:30 回复(0)
有没有大佬可以解析一下?
(n >>1)8033333333333代表什么?
(n == 0[n == 1)代表什么?
发表于 2023-08-08 11:08:35 回复(1)
我发现有很多题都是统计二进制表示中1的数量,虽然代码各异
发表于 2023-02-20 10:21:23 回复(0)
老老实实笔算出来的,咱也不知道啥啥算法,好好学习一下๛ก(ー̀ωー́ก) 
发表于 2021-03-21 20:08:22 回复(0)
就我一个老实笔算的吗😂
发表于 2020-12-04 11:46:39 回复(0)
count函数的原理 (MIT HAKM 算法: 是用来统计n的二进制表示中1个数量。
发表于 2019-11-06 23:06:13 回复(0)
我没学过那个什么波什么数列,再过15天就能学完排序。自己动手一个一个算,最后还选错了,我就想怎么可能一个选择题这么复杂。
发表于 2018-05-05 20:27:35 回复(1)