求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

我发现网上的做法都很神,各种理由编译的巧妙办法,就能间接地利用循环来解决,构造函数 递归什么的。想了好久,脑子里只有位运算。。。终于折腾出来了。

代码真傻,我真的没用循环。。。

 #include <stdio.h>
#include <iostream>
using namespace std;
#define LL long long
int p[] = {,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,
,};
int fun(int x)
{
int sum;
sum = x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
sum += x<<;
return sum;
}
int main()
{
int n;
LL ans; while(cin>>n)
{
ans = (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans += (n<<)&fun(((n+)&p[])>>);
ans = ans>>;
cout<<ans<<endl;
}
return ;
}

求1+2+……+n(位运算)的更多相关文章

  1. 求幂&&快速幂&&位运算

    1.普通的求幂方法: 时间复杂度为O(n),对于比较大的数在1s限时内可能会TLE int pow(int base,int p){ int ans=1; for(int i=1;i<=p;i+ ...

  2. 求集合中选一个数与当前值进行位运算的max

    求集合中选一个数与当前值进行位运算的max 这是一个听来的神仙东西. 先确定一下值域把,大概\(2^{16}\),再大点也可以,但是这里就只是写写,所以无所谓啦. 我们先看看如果暴力求怎么做,位运算需 ...

  3. C语言学习笔记之位运算求余

    我们都知道,求一个数被另一个数整除的余数,可以用求余运算符”%“,但是,如果不允许使用求余运算符,又该怎么办呢?下面介绍一种方法,是通过位运算来求余,但是注意:该方法只对除数是2的N次方幂时才有效. ...

  4. PHP:第一章——按位运算和求余运算(判断奇偶数)

    <?php //按位运算:与1按位运算等于0,输出偶数.如果等于1,输出奇数 //输出偶数: for($i=0;$i<10;$i++){ if(($i & 1)==0){ echo ...

  5. [note]一类位运算求最值问题

    [note]一类位运算求最值问题 给定一些数,让你从中选出两个数a,b,每次询问下列中的一个 1.a and b的最大值 2.a xor b的最大值 3.a or b的最大值 神仙们都是FWT,小蒟蒻 ...

  6. c语言小技巧:C语言学习笔记之位运算求余

    我们都知道,求一个数被另一个数整除的余数,可以用求余运算符”%“,但是,如果不 允许使用求余运算符,又该怎么办呢?下面介绍一种方法,是通过位运算来求余,但是注 意:该方法只对除数是2的N次方幂时才有效 ...

  7. LeetCode通关:求次数有妙招,位运算三连

    分门别类刷算法,坚持,进步! 刷题路线参考: https://github.com/chefyuan/algorithm-base 大家好,我是刷题困难户老三,这一节我们来刷几道很有意思的求次数问题, ...

  8. 通过位运算求两个数的和(求解leetcode:371. Sum of Two Integers)

    昨天在leetcode做题的时候做到了371,原题是这样的: 371. Sum of Two Integers Calculate the sum of two integers a and b, b ...

  9. 用位运算实现四则运算之加减乘除(用位运算求一个数的1/3) via Hackbuteer1

    转自:http://blog.csdn.net/hackbuteer1/article/details/7390093 ^: 按位异或:&:按位与: | :按位或 计算机系统中,数值一律用补码 ...

随机推荐

  1. 【jquery】 【jQuery技术内幕】阅读笔记 一

    jQuery( object ) jquery在构造对象时,除了可以用十分好用的css选择器来查找DOM,还可以传入一个javascript对象来生成一个jquery对象. // JS var foo ...

  2. a个人经验总结2

    金额 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8& ...

  3. 7-15ALL、 ANY、SOME子查询

    ALL:所有 ANY:部分 SOME:与ANY相同,使用ANY的地方都可以用SOME替换. >ALL:父查询中列的值必须大于子查询返回的值列表的每一个值. >ANY:父查询中的返回值必须大 ...

  4. 单例模式/singleton模式/创建型模式

    Java实现要点: 私有构造方法 线程安全(并发的考虑) 延迟加载(效率的考虑,对于较大的类在使用时在加载) 公有方法访问单一实例 常见单例模式代码及问题 //无延迟加载,常驻内存(即使不使用) cl ...

  5. 在windows系统的文件右键菜单中增加“命令提示符”

    本实用小工具能够在windows系统的文件右键菜单中增加“命令提示符”,方便快速进入制定文件的命令提示窗口,避免逐层输入或复制文件夹路径,极其实用. 工具下载地址如下:360云盘(访问密码:5b71) ...

  6. 非正规写法获取不到tr,td

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. tnsnames.ora 监听配置文件详解

    今天是重要的一天.将XML数据导入ORACLE遇到很多问题,学了好多,其中很长时间花在网络配置上,刚开始学,具体原因不知道,先把搜集到的好文章存下来,以后慢慢研究. 监听配置文件            ...

  8. Oracle资源

    ORACLE 10g下载地址 oracle 下载还需要用户名我自己注册了个方便大家使用下载 user:1603869780@qq.compass:qwe123QWE现在直接点击不能下载了 要经过ora ...

  9. 15 个 Android 通用流行框架大全

      1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展 ...

  10. html css js 一些记录.

    webstorm 的基本使用 webstorm 格式化 html 代码: Ctrl+Alt+L js html css 基本使用 注意 dom 的 innerHTML会刷新dom,所以里面包含的事件绑 ...