传统弱校HFUT的蒟蒻,真相只有一个

2015安徽省赛 B.求和

题目描述

对于正整数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 <stdio.h>
 3 int main()
 4 {
 5     using namespace std;
 6     long long c,i,j=1,m,n,t=0,rankl=0;
 7     int a;
 8     scanf("%d",&a);
 9     while(scanf("%lld%lld",&m,&n)!=EOF){
10         if(m==1&&n==1){printf("-1\n");}
11         else{
12         c=m/(2*n);
13         rankl=n*c*n;
14         for(i=2*n*c+1;i<=m;i++)
15         {
16             t++;
17             if(t>n)
18             {
19                 j++;
20                 t=1;
21             }
22             if((j+2)%2==0)
23             {
24                 rankl=rankl+i;
25             }
26             else
27             {
28                 rankl=rankl-i;
29             }
30         }
31         printf("%lld\n",rankl);
32         t=0;rankl=0;j=1;
33     }}
34     return 0;
35 }
36 /**************************************************************
37     Problem: 1206
38     User: 2014217052
39     Language: C++
40     Result: 正确
41     Time:614 ms
42     Memory:1504 kb
43 ****************************************************************/

 

posted @ 2015-07-31 16:51  未名亚柳  阅读(200)  评论(0编辑  收藏  举报