问题 B: 求和

对于正整数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)的值,每个输出单独占一行

 

 
3
1 1
2 1
3 1
-1
1
-2



#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
    long long n,k;
    long long temp;
    long long s;
    long long num;
    cin>>num;
    while(num--)
    {
        cin>>n>>k;
        s=0;
        k*=2;
        temp=k;
        for(int i=1;i<=n;i++)
        {
            if(k>temp/2)
                s=s+(-1)*i;
            else
                s+=i;
//            printf("s:%lld\n",s);
            k--;
            if(k==0)
                k=temp;

        }
        cout<<s<<endl;
    }
}

 

posted on 2020-04-27 10:30  沈香茶  阅读(191)  评论(0)    收藏  举报