B - Tricky Sum
2016-07-21 21:30
162 查看
B - Tricky Sum
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64uSubmit
Status
Description
求和是一种最常见的运算,我们经常做的就是1加到n的和。例如,1加到100的和是5050。但是现在,我们稍微变动一下求和方法,对于属于2的幂次的数,我们做的是减法,其余仍旧做加法。例如,当n=4的时候,最后的结果应该是-1-2+3-4=-4,因为1、2、4分别是2的0次方、2的1次方、2的2次方。现在请你来计算t次这样的运算。
Input
输入第一行是一个正整数t,表示要进行t次运算。接下来t行,每行一个整数n,表示要按新的求和方法计算1到n的和。
注意:1<=t<=100,1<=n<=10^9。
Output
输出t组答案,每个答案占一行。
Sample Input
2
4
1000000000
Sample Output
-4
499999998352516354
这里写代码片
hljs cpp">#include<cstdio> #include<algorithm> using namespace std; int main() { int i,n,t,cnt; __int64 s,sn; cin>>t; while(t--) { cin>>n; i=2; cnt=0; while( i<=n)//公式应多举例子验证 { ++cnt; i*=2; } sn=1; //定义变量赋初值 for(i=1;i<=cnt+1;++i) { sn*=2; } sn-=1; s=n*(n+1)/2-2*sn; cout<<s<<endl; } return 0; }
相关文章推荐
- 前端开发资源汇总
- mysql处理字符串的两个绝招:substring_index,concat
- Android Volley完全解析
- 数据结构 最大值减去最小值小于或等于num的子数组数量
- mac版抓包工具charles使用技巧
- 关键字static
- Linux网络之设备接口层:发送数据包流程dev_queue_xmit(二)
- angular路由模拟微信页面切换和页面之间的传值
- PHP+MySql(第一节:实现简单的数据库连接+查询)
- Lucene搜索引擎入门写法
- 通过xml处理sql语句时对小于号与大于号的处理转换
- SQL Server如何创建递归函数
- A - Divisibility
- Valid Parentheses
- 水仙花数——java
- 【 CodeForces 612A 】 The Text Splitting
- 自定义View之利用组合View实现复用
- String、String.valueOf、toString 它们三者的区别总结
- java----单例模式
- mysql1主多从配置