zoukankan      html  css  js  c++  java
  • bzoj 1257

    今天题目看来看去都觉得不可以做啊,数论弱到不堪直视

    分为2个部分,对于n>k部分直接n*(n-k)

    对于n<=k部分,x%i=x-(x/i)*i,这样就可以枚举商,然后分段加起来。。

     1 #include<bits/stdc++.h>
     2 #define inc(i,l,r) for(int i=l;i<=r;i++)
     3 #define dec(i,l,r) for(int i=l;i>=r;i--)
     4 #define link(x) for(edge *j=h[x];j;j=j->next)
     5 #define mem(a) memset(a,0,sizeof(a))
     6 #define inf 1e9
     7 #define ll long long
     8 #define succ(x) (1<<x)
     9 using namespace std;
    10 ll read(){
    11     ll x=0,f=1;char ch=getchar();
    12     while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
    13     while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
    14     return x*f;
    15 }
    16 ll n,k,t,ans;
    17 int main(){
    18     freopen("data.in","r",stdin);
    19     n=read();k=read();
    20     if(k<n){
    21         ans=(ll)k*(n-k);n=k;
    22     }
    23     for(int i=1;i<=n;i=t+1){
    24         t=k/i;t=k/t;
    25         if(t>n)t=n;
    26         ans+=(ll)k*(t-i+1)-(k/i)*(t-i+1)*(i+t)/2;
    27     }
    28     printf("%lld",ans);
    29     return 0;
    30 }
    View Code
  • 相关阅读:
    java 接口中的成员变量与方法
    Spring BeanPostProcessor
    MySQL更改命令行默认分隔符
    java 动态代理
    《剑指offer》:[62]序列化二叉树
    group by语法
    Mysql两种引擎
    线程池大小设置
    Synchronized及其实现原理
    CAS ABA问题
  • 原文地址:https://www.cnblogs.com/onlyRP/p/5178821.html
Copyright © 2011-2022 走看看