首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

研究生复试的时候老师出的一道算法题,小弟我觉得比较有意思,就来晒晒,看看高人见解

2012-03-17 
研究生复试的时候老师出的一道算法题,我觉得比较有意思,就来晒晒,看看高人见解。“只用赋值、加1、循环三个操

研究生复试的时候老师出的一道算法题,我觉得比较有意思,就来晒晒,看看高人见解。
“只用赋值、加1、循环三个操作实现一个减1的运算。”
上面是原话,老师就给那么多信息,没有别的话了。
高人们有代码的可以贴代码,随便你用什么语言,没代码的说说清楚思路也行。顺便帮忙看看哪些答案有错误啊。

[解决办法]

C/C++ code
template <typename T>T MOne(T a){    T i = 0;    for (i; (i + 1) != a; i++)    {    }    return i;}
[解决办法]
抛砖引玉 给个只对奇数有效的
C/C++ code
union U{  int a;  int b:1;}u;int f(int a){  u.a = a;  u.b++;  return u.a;}int _tmain(int argc, _TCHAR* argv[]){  printf("%d\n", f(9));  return 0;}
[解决办法]
探讨

你们老师真仁慈

[解决办法]
这题目不是C语言题目,也不是考算法,而是考你计算机整数处理的基本概念

先要看整数是多长的,假设是16位的,那么循环65535次的加一,就是减一

对于n比特宽的整数,循环2^n - 1次加一,就是减一。

热点排行
Bad Request.