传送门:提交
1074: ex412a:表达式求值
题目描述
根据输入的整数n,求出S=1+2-3+4-5+6-…±n的值(最后一项是正还是负取决于该数是偶数还是奇数)。
输入
只有1行1个正整数n(1<=n<1018)。
输出
只有1行1个整数S。
样例输入
1
样例输出
1
我们要注意超坑的几点(呵呵):
1.循环算法不等于要循环;
2.有规律哦;
这里得说一下规律:如果n是奇数,答案就是-(n/2-1),如果是偶数,答案就是n/2+2(开始没用这规律我怎么也做不出来,急疯了),这是我的100分代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,ans=0,i,j,num;
cin>>n;
if(n==1)
ans=1;
if(n%2==1&&n>1)
ans=-(n/2-1);
if(n%2==0&&n>1)
ans=n/2+2;
cout<<ans;
return 0;
}