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 }
时间: 2024-10-14 03:19:07

1206: B.求和的相关文章

cogs 36.求和问题

36. 求和问题 ★   输入文件:sum.in   输出文件:sum.out   简单对比时间限制:1.2 s   内存限制:128 MB [问题描述] 在一个长度为n的整数数列中取出连续的若干个数,并求它们的和. [输入格式] 输入由若干行组成,第一行有一个整数n    第二行有n个整数    第三行有一个整数m    下面m行,每行两个整数i与j(i<=j),表示求和的起始和终止位置. [输出格式] 输出有m行, 每行一个整数,表示这个数段数列的和. [输入样例] 输入文件 82 3 4

使用Linq求和方法Sum计算集合中多个元素和时应该注意的性能问题

提出问题 本文使用下面的实例来说明问题,以下是实例的完整代码. //************************************************************ // // Sum应用示例代码 // // Author:三五月儿 // // Date:2014/09/10 // // http://blog.csdn.net/yl2isoft // //**********************************************************

杭电 2015 偶数求和

http://acm.hdu.edu.cn/showproblem.php?pid=2015 偶数求和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 45044    Accepted Submission(s): 19675 Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序

HDU4027 Can you answer these queries 线段树区间求和+剪枝

给了你n,然后n个数字在一个数组中,接下来m个询问,每个询问三个数字 t,x,y,若t==0,那么修改区间[x,y]的每一个值,变为原来每个位置上的数 开根号取整,若t==1,那么对区间[x,y]求和 由于n,m,很大,所以树状数组铁定超时,若直接用线段树来做区间修改,那么也是超时,这类题目没别的方法了,静心剪枝,发现题目给的数据范围为2^63,有没有发现,2^63开根号 绝对不需要开10次,就能到1,到1以后就不需要再开了,意思就是若有某个区间[x,y]每一个点的值都为1时,这一段区间事实上是

7.03 对某列的值求和

问题:计算某个列中所有值的和,例如,计算所有职员的工资总额.解决方案:如果将整个表作为一个组或一个窗口求和,则只需对相应列使用SUM函数,而不要使用GROUP BY 子句:select sum(sal) from emp 如果创建了多个数据组或多个窗口,则使用SUM函数的同时,还要使用GROUP BY子句.下面例子将按部门计算职员的工资总额:select deptno,sum(sal) as total_for_dept from emp group by deptno;

HDU 1588 Gauss Fibonacci(矩阵高速幂+二分等比序列求和)

HDU 1588 Gauss Fibonacci(矩阵高速幂+二分等比序列求和) ACM 题目地址:HDU 1588 Gauss Fibonacci 题意: g(i)=k*i+b;i为变量. 给出k,b,n,M,问( f(g(0)) + f(g(1)) + ... + f(g(n)) ) % M的值. 分析: 把斐波那契的矩阵带进去,会发现这个是个等比序列. 推倒: S(g(i)) = F(b) + F(b+k) + F(b+2k) + .... + F(b+nk) // 设 A = {1,1,

hzau 1206 MathematicalGame

1206: MathematicalGame Time Limit: 2 Sec  Memory Limit: 1280 MBSubmit: 124  Solved: 15[Submit][Status][Web Board] Description Xiao Ming likes to play mathematical games very much. One day, he gets a sequence of n positive integers. XOR (l , r) is def

【noip】noip201503求和

3. 求和 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 题目描述 一条狭长的纸带被均匀划分出了n个格子,格子编号从1到n.每个格子上都染了一种颜色colori用[1,m]当中的一个整数表示),并且写了一个数字numberi. 5 5 3 2 2 2 编号 1 2 3 4 5 6 定义一种特殊的三元组:(x, y, z),其中x,y,z都代表纸带上格子的编号,这里的三元组要求满足以下两个条件: 组要求满足以下两个条件: 1.  xy

java课堂训练 参数求和

package demo; //20153173 Yulixiang 2016.9.20 public class CommandParameter {    public static void main(String[] args) {        System.out.println("the number:" +args.length);        int i,sum=0;        for(String arg:args){              i=Integ