1492: 求和
时间限制: 1 Sec 内存限制: 128 MB提交: 8 解决: 5
题目描述
对于正整数n,k,我们定义这样一个函数f,它满足如下规律
f(n,k=1)=-1+2-3+4-5+6...n
f(n,k=2)=-1-2+3+4-5-6...n
f(n,k=3)=-1-2-3+4+5+6...n
f(n,k=4)=-1-2-3-4+5+6+7+8...n
现在给出n和k,你的任务就是要计算f(n,k)的值。
输入
首先是一个整数T,表示有T组数据
接下来每组数据是n和k(1<=n,k<=100000000)
输出
打印出f(n,k)的值,每个输出单独占一行
样例输入
31 12 13 1
样例输出
-11-2
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int T ;
int t;
long long sum=0;
scanf("%d", &T);
long long n, k;
while(T--){
t=-1;
sum=0;
scanf("%lld%lld", &n, &k);
for(long long i=1;i<=n;i++){
sum+=i*t;
if(i%k==0)
t*=-1;
}
printf("%lld\n", sum);
}
return 0;
}
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int T ;
int t;
long long sum=0;
scanf("%d", &T);
long long n, k;
while(T--){
t=-1;
sum=0;
scanf("%lld%lld", &n, &k);
for(long long i=1;i<=n;i++){
sum+=i*t;
if(i%k==0)
t*=-1;
}
printf("%lld\n", sum);
}
return 0;
}