• B 找规律


    Description

    对于正整数n,k,我们定义这样一个函数f,它满足如下规律
    f(n,k=1)=-1+2-3+4-5+6...n
    f(n,k=2)=-1-2+3+4-5-6...n
    f(n,k=3)=-1-2-3+4+5+6...n
    f(n,k=4)=-1-2-3-4+5+6+7+8...n
    现在给出n和k,你的任务就是要计算f(n,k)的值。


    Input

    首先是一个整数T,表示有T组数据
    接下来每组数据是n和k(1<=n,k<=100000000)

    Output

    打印出f(n,k)的值,每个输出单独占一行

    Sample Input

    3
    1 1
    2 1
    3 1

    Sample Output

    -1
    1
    -2

    循环节的大小为k*k 长度为2*k

     1 # include <cstdio>
     2 # include <cstring>
     3 # include <iostream>
     4 # define LL long long
     5 using namespace std ;
     6 
     7 int main ()
     8 {
     9    // freopen("in.txt","r",stdin) ;
    10     int T ;
    11     cin>>T ;
    12     while (T--)
    13     {
    14         LL n , k;
    15         cin>>n>>k ;
    16         LL i ;
    17         LL t1 = n/(2*k) ;
    18         LL sum = t1 * k * k ;
    19         LL l = k ;
    20         for (i = 2*k*t1+1 ; i <= n ; i++)
    21         {
    22             if (l != 0)
    23             {
    24                 sum -= i ;
    25                 l-- ;
    26             }
    27             else
    28             {
    29                 sum += i ;
    30             }
    31         }
    32 
    33         cout<<sum<<endl ;
    34     }
    35 
    36 
    37 
    38     return 0 ;
    39 }
    View Code
  • 相关阅读:
    c#线程带参数
    svn自动update到指定目录
    204. 计数质数
    178. 分数排名
    387. 字符串中的第一个唯一字符
    374. 猜数字大小
    371. 两整数之和
    350. 两个数组的交集 II
    326. 3的幂
    219. 存在重复元素 II
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/4528264.html
Copyright © 2020-2023  润新知