2020牛客暑期多校训练营(第七场)H

Dividing

https://ac.nowcoder.com/acm/contest/5672/H

题目描述

  The following rules define a kind of integer tuple - the Legend Tuple:
   is always a Legend Tuple, where k is an integer.
  if is a Legend Tuple, is also a Legend Tuple.
  if is a Legend Tuple, is also a Legend Tuple.
  We want to know the number of the Legend Tuples where , .
  In order to avoid calculations of huge integers, report the answer modulo instead.

输入描述

  The input contains two integers and , .

输出描述

  Output the answer modulo .

示例1

输入

3 3

输出

8

示例2

输入

3 9

输出

14

分析

  所有 Legend Tuple 出发,会产生 两种情况();其中, 的情况经过一步操作可以变成 的情况。
  显然,当且仅当 时,Legend Tuple
对于 的情况,其贡献为 的贡献, 的贡献。
  对于 的情况,其贡献为
  对于两部分贡献,有 这部分的贡献是重复的,需要减去重复的一份贡献
  因此最终的答案为 。可以用数论分块解决。
  当然, 时需要进行特判:当 ,答案为 ;当 ,答案为

代码

/******************************************************************
Copyright: 11D_Beyonder All Rights Reserved
Author: 11D_Beyonder
Problem ID: 2020牛客暑期多校训练营(第七场)Problem H
Date: 8/28/2020
Description: Block
*******************************************************************/
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll mod=1000000007;
ll N,K;
ll cal(ll n,ll k){
    //数论分块
    ll l,r;
    ll ans=0;
    for(l=1;l<=k;l=r+1){
        if(n/l==0){
            break;
        }
        r=min(k,n/(n/l));
        ans+=(r-l+1)*(n/l)%mod;
        ans%=mod;
    }
    return ans;
}
int main(){
    cin>>N>>K;
    if(N==1){
        cout<<K%mod<<endl;
    }else if(K==1){
        cout<<N%mod<<endl;
    }else{
        cout<<((cal(N,K)+cal(N-1,K)+K-N)%mod+mod)%mod<<endl;
    }
    return 0;
}
牛客暑期多校训练营题解 文章被收录于专栏

收集牛客暑期多校训练营的题解

全部评论

相关推荐

01-12 14:08
门头沟学院 Java
有寒假来武汉小米总部实习的大学生嘛,我也是小米的员工,想找合租舍友,仅限女生可免租半月,二月初可入住,也就是说房租是2.15开始算的哦~也可以将行李提前放过来~房屋介绍:1、房子情况:有电梯;租的是三室一厅一卫一厨,&nbsp;但是有个卧室比较小,不打算找人,只住两个人就可以了;衣柜也很大,可以放下很多衣服;房屋采光真的很好,早上起来可以在床上晒太阳的那种,十分惬意(夏季晚上十分好看!)2.&nbsp;楼下离我们很近的地方有小吃街和一个两层大超市(大概步行两分钟多就可以走到)&nbsp;,还有一个新开的麦当劳,晚上可以去吃小吃,购买物资也可以去大超市;3.&nbsp;房子基本设施齐备(洗衣机,冰箱,空调,油烟机,热水器);4.&nbsp;我有稳定的工作,生活中很注意卫生,周末有时间会自己做饭,可以投喂哦~5.&nbsp;出行:距离公交站步行10分钟不到,距政务中心,武汉小米总部三站(晚上我都是走回来的,很近的~);一个比较进的地铁,距离大概1km左右;出入我觉得很方便;6.&nbsp;房租:1150每月,押一付二,无物业费,也没有中介费和其他额外费用。7.&nbsp;民用水电燃气,用多少交多少,水电费正常平摊。希望你是:1.&nbsp;女生(本人女),不带异性回家,如有同性朋友来玩,最多过夜一晚;2.&nbsp;爱干净,讲卫生,作息正常,不吵闹,有稳定工作;3.&nbsp;好沟通,有任何问题一定要沟通,不要闷着!中介勿扰,非诚勿扰!!!希望不要浪费彼此的时间诚心有意向的可以联系我看房
租房找室友
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务