zoukankan      html  css  js  c++  java
  • AOJ 740 求和

     
     
    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
    Source
    安徽省2015年“京胜杯”大学生程序设计竞赛

     
     
    简单题解:
     
        - 找规律,循环节大小为k*k,长度为2*k
     
        - 用这种方法解决虽然能低调通过,但消耗的时间仍然接近1s,求更好的解决办法~
     
     
     1 #include<iostream>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     long long t;
     7     cin>>t;
     8     while(t--)
     9     {
    10         long long n,k,l;
    11         while(cin>>n>>k)
    12         {
    13             l=n/(2*k);
    14             long long sum=l*k*k;
    15             long long s=k;
    16             for(long long i=l*2*k+1;i<=n;i++)
    17             {
    18                 if(s!=0)
    19                 {
    20                     sum-=i;
    21                     s--;
    22                 }
    23                 else
    24                     sum+=i;
    25             } 
    26             cout<<sum<<endl;
    27         }    
    28     }
    29     return 0;
    30 }
  • 相关阅读:
    laravel5.2总结--blade模板
    laravel5.2总结--响应
    laravel5.2总结--请求
    git总结
    laravel5.2总结--路由
    Get与Post的一些总结
    python库安装
    iptables的recent模块
    iptables
    dmucs与distcc
  • 原文地址:https://www.cnblogs.com/wixy/p/5496178.html
Copyright © 2011-2022 走看看