zoukankan      html  css  js  c++  java
  • [LOJ6245] 红太阳

    Description

    给定 (n,a,c le 10^9),求 (sumlimits_{i=0}^nlfloorfrac{a imes i}c floor),保证 (c|n)

    Solution

    化简原式,得

    [egin{aligned} &sumlimits_{i=0}^nlfloorfrac{a imes i}c floor\ =&sumlimits_{i=0}^nfrac{a imes n}c-lceilfrac{a imes(n-i)}c ceil\ =&sumlimits_{i=0}^nfrac{a imes n}c-lceilfrac{a imes i}c ceil\ =&sumlimits_{i=0}^nfrac{a imes n}c-(lfloorfrac{a imes i}c floor+1-[c|(a imes i)])\ =&(n+1)(frac{a imes n}c-1)+sumlimits_{i=0}^n[c|(a imes i)]-sumlimits_{i=0}^nlfloorfrac{a imes i}c floor\ =&(n+1)(frac{a imes n}c-1)+frac n{frac c{gcd(a,c)}}+1-sumlimits_{i=0}^nlfloorfrac{a imes i}c floor\ =&frac nc imes(a imes(n+1)-c+gcd(a,c))-sumlimits_{i=0}^nlfloorfrac{a imes i}c floor\ =&frac{frac nc imes(a imes(n+1)-c+gcd(a,c))}2 end{aligned} ]

    #include <bits/stdc++.h>
    using namespace std;
    
    
    #define int long long 
    const int N = 1000005;
    const int mod = 1e9+7;
    
    int qpow(int p,int q)
    {
        return (q&1?p:1)*(q?qpow(p*p%mod,q/2):1)%mod;
    }
    
    int inv(int p)
    {
        return qpow(p,mod-2);
    }
    
    signed main()
    {
        int n,a,c;
        cin>>n>>a>>c;
        int ans=a*(n+1)%mod-c+__gcd(a,c);
        ans%=mod;
        ans+=mod;
        ans%=mod;
        ans*=n/c;
        ans%=mod;
        ans*=inv(2);
        ans%=mod;
        cout<<ans<<endl;
        //system("pause");
    }
    
  • 相关阅读:
    设计模式之《工厂方法》
    设计模式之 《简单工厂》
    fegin 调用源码分析
    ajax上传预览
    ajax小应用
    ajax执行流程1
    ajax异步post方法
    ajax get异步方法
    js ajax请求流程
    form表单提交
  • 原文地址:https://www.cnblogs.com/mollnn/p/13689470.html
Copyright © 2011-2022 走看看