2015安徽省赛 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 <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 ****************************************************************/