1206: B.求和
题目描述 点击这里
对于正整数n,k,我们定义这样一个函数f,它满足如下规律
现在给出n和k,你的任务就是要计算f(n,k)的值。
输入
首先是一个整数T,表示有T组数据
接下来每组数据是n和k(1<=n,k<=108)
输出
打印出f(n,k)的值,每个输出单独占一行
样例输入
3
1 1
2 1
3 1
样例输出
-1
1
-2
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 using namespace std; 5 int main() 6 { 7 long long T; 8 cin>>T; 9 while(T--) 10 { 11 long long n,i,j,k,zu,dui,f,sum=0,s; 12 cin>>n>>k; 13 zu=n/k; 14 dui=zu/2; 15 sum=dui*k*k; 16 s=n-dui*2*k; 17 f=1+dui*2*k; 18 if(s<=k) 19 { 20 for(i=0;i<s;i++) 21 { 22 sum-=f; 23 f++; 24 } 25 } 26 else 27 { 28 for(i=0;i<k;i++) 29 { 30 sum-=f; 31 f++; 32 } 33 for(i=0;i<s-k;i++) 34 { 35 sum+=f; 36 f++; 37 } 38 } 39 cout<<sum<<endl; 40 } 41 }