传送门

数论好题啊。

首先对于b&lt;=sqrt(n)b&lt;=sqrt(n)b<=sqrt(n)的情况直接枚举b判断一下就行了。

下面谈一谈如何解决b&gt;sqrt(n)b&gt;sqrt(n)b>sqrt(n)的情况。

如果b&gt;sqrt(n)b&gt;sqrt(n)b>sqrt(n)

显然有:

nnn modmodmod bbb +++ n/b=sn/b=sn/b=s

nnn modmodmod bbb +++ b∗(n/b)=sb*(n/b)=sb∗(n/b)=s

这里用的是整除向下取整

我们不妨令A=nA=nA=n modmodmod bbb,B=n/bB=n/bB=n/b。

于是就有了下面的式子:

A+B=sA+B=sA+B=s

A+b∗B=nA+b*B=nA+b∗B=n

A,B≤sqrt(n)A,B\le sqrt(n)A,B≤sqrt(n)

由头两个式子可以推出

(b−1)∗B=n−s(b-1)*B=n-s(b−1)∗B=n−s

于是枚举b−1b-1b−1就可以了。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,s,len;
inline bool check(ll x,ll tmp){
	if(tmp==1)return true;
	ll cnt=0;
	while(x)cnt+=x%tmp,x/=tmp;
	return cnt==s;
}
int main(){
	cin>>n>>s,len=(ll)sqrt(n)+1;
	for(ll i=2;i<=len;++i)if(check(n,i)){cout<<i;return 0;}
	if(n<=s){cout<<(n<s?-1:n+1);return 0;}
	ll tmp=n-s,ttmp=tmp/len+1;
	for(int i=ttmp;i;--i)if(tmp%i==0&&s>=i&&s-i<=tmp/i&&i<=tmp/i){cout<<tmp/i+1;return 0;}
	cout<<-1;
	return 0;
}

2018.09.17 atcoder Digit Sum(数论)的更多相关文章

  1. 2018.09.17 atcoder Tak and Hotels(贪心+分块)

    传送门 一道有意思的题. 一开始想错了,以为一直lowerlowerlower_boundboundbound就可以解决询问,结果交上去TLE了之后才发现时间复杂度是错的. 但是贪心思想一定是对的,每 ...

  2. 2018.09.17 atcoder Tak and Cards(背包)

    传送门 背包经典题. 直接f[i][j]f[i][j]f[i][j]表示选i张牌和为j的方案数. 最后统计答案就行了. 代码: #include<bits/stdc++.h> #defin ...

  3. 2018.09.19 atcoder Card Game for Three(组合数学)

    传送门 简单组合数学想优化想了半天啊233. 我们只需考虑翻开n张A,b张B,c张C且最后一张为A的选法数. 显然还剩下m+k−b−cm+k-b-cm+k−b−c张牌没有选. 这样的话无论前n+b+c ...

  4. 2018.09.18 atcoder Many Formulas(搜索)

    传送门 感觉自己搜索能力退化了,这种弱智搜索写了整整5min,这样下去比赛会凉的. 看来得多练练题了. 代码: #include<bits/stdc++.h> #define ll lon ...

  5. 2018.09.16 atcoder Garbage Collector(贪心)

    传送门 昨晚打比赛的时候不是很机智啊. 这道题贪心就能过了. 我们可以发现一个明显的结论,每次选的垃圾的距离从大到小排序之后,每个距离对答案的贡献的系数是5,5,7,9,11-也就是最远的是5,其余都 ...

  6. 2018.08.10 atcoder Median Sum(01背包)

    传送门 题意简述:输入一个数组an" role="presentation" style="position: relative;">anan. ...

  7. 2018/09/17《涂抹MySQL》【性能优化及诊断】学习笔记(七)

    读 第十三章<MySQL的性能优化与诊断> 总结 一说性能优化,整个人都像被打了鸡血一样

  8. 2018.09.23 atcoder Boxes and Candies(贪心)

    传送门 一道挺有意思的贪心. 从1到n依次满足条件. 注意要特判第一个数已经大于x的情况. 但是如何贪心吃呢? 如果靠左的数没有越界,我们吃靠右的数. 原因是下一次靠右的数就会成为靠左的数,相当于多贡 ...

  9. 2018.09.22 atcoder Snuke's Coloring 2(线段树+单调栈)

    传送门 就是给出一个矩形,上面有一些点,让你找出一个周长最大的矩形,满足没有一个点在矩形中. 这个题很有意思. 考虑到答案一定会穿过中线. 于是我们可以把点分到中线两边. 先想想暴力如何解决. 显然就 ...

随机推荐

  1. 用meta标签让双核浏览器用我们指定的内核渲染

    <html> <head> <meta name="renderer" content="webkit|ie-comp|ie-stand&q ...

  2. Screen Monitors

    Screen Screen->MonitorCount Monitors Screen->FormCount Screen->Forms[I]->Name

  3. 用FireDAC获取 SQL SERVER错误文本信息

    SQL SERVER获取错误文本信息,BDE.adoquery一直取不到,FDQuery可以了 Some DBMS, like SQL Server, return messages as an ad ...

  4. WDA-FPM-2-APPLICATION-TABSTRIP(OIF)

    转载:https://www.cnblogs.com/sapSB/p/10081344.html   FPM二:简单的APPLICATION-TABSTRIP(OIF) 1.新建WDA程序ZLYFPM ...

  5. Java Socket通信实例

    一.简单的客户端与服务器一对一连接: Socket通信的步骤: 1.创建ServerSocket和Socket 2.打开连接到Scket的输入/输出流 3.按照协议对Socket进行读/写操作 4.关 ...

  6. php, postgresql 安装

    sudo yum install postgresql84-server postgresql84-contrib ubuntu下面安装的问题解决: Postgresql installation o ...

  7. Spoon新建repository的时候

    Spoon新建repository的时候,下面选项选择‘否’,不要选择‘是’,不然可能会出错.

  8. Linux运维就业技术指导(九)期末架构考核

    一,毕业架构设计考核筹备 1.1,架构图模板示例 1.1.1 架构图(一)概述 本架构是4层lvs负载均衡给后方7层nginx反向代理: 业务进行了动静分离: 数据库前端有memcached缓存组,降 ...

  9. spring JPA分页排序条件查询

    @RequestMapping("/listByPage") public Page<Production> listByPage(int page, int size ...

  10. oracle存储过程-获取错误信息

    dbms_output.put_line('code:' || sqlcode); dbms_output.put_line('errm:' || sqlerrm); dbms_output.put_ ...