码迷,mamicode.com
首页 > 其他好文 > 详细

1206: B.求和

时间:2015-05-29 17:44:45      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:

题目描述 点击这里

对于正整数n,k,我们定义这样一个函数f,它满足如下规律

 

现在给出nk,你的任务就是要计算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 }

 

1206: B.求和

标签:

原文地址:http://www.cnblogs.com/a1225234/p/4538632.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!