2018.09.17 atcoder Digit Sum(数论)
传送门
数论好题啊。
首先对于b<=sqrt(n)b<=sqrt(n)b<=sqrt(n)的情况直接枚举b判断一下就行了。
下面谈一谈如何解决b>sqrt(n)b>sqrt(n)b>sqrt(n)的情况。
如果b>sqrt(n)b>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(数论)的更多相关文章
- 2018.09.17 atcoder Tak and Hotels(贪心+分块)
传送门 一道有意思的题. 一开始想错了,以为一直lowerlowerlower_boundboundbound就可以解决询问,结果交上去TLE了之后才发现时间复杂度是错的. 但是贪心思想一定是对的,每 ...
- 2018.09.17 atcoder Tak and Cards(背包)
传送门 背包经典题. 直接f[i][j]f[i][j]f[i][j]表示选i张牌和为j的方案数. 最后统计答案就行了. 代码: #include<bits/stdc++.h> #defin ...
- 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 ...
- 2018.09.18 atcoder Many Formulas(搜索)
传送门 感觉自己搜索能力退化了,这种弱智搜索写了整整5min,这样下去比赛会凉的. 看来得多练练题了. 代码: #include<bits/stdc++.h> #define ll lon ...
- 2018.09.16 atcoder Garbage Collector(贪心)
传送门 昨晚打比赛的时候不是很机智啊. 这道题贪心就能过了. 我们可以发现一个明显的结论,每次选的垃圾的距离从大到小排序之后,每个距离对答案的贡献的系数是5,5,7,9,11-也就是最远的是5,其余都 ...
- 2018.08.10 atcoder Median Sum(01背包)
传送门 题意简述:输入一个数组an" role="presentation" style="position: relative;">anan. ...
- 2018/09/17《涂抹MySQL》【性能优化及诊断】学习笔记(七)
读 第十三章<MySQL的性能优化与诊断> 总结 一说性能优化,整个人都像被打了鸡血一样
- 2018.09.23 atcoder Boxes and Candies(贪心)
传送门 一道挺有意思的贪心. 从1到n依次满足条件. 注意要特判第一个数已经大于x的情况. 但是如何贪心吃呢? 如果靠左的数没有越界,我们吃靠右的数. 原因是下一次靠右的数就会成为靠左的数,相当于多贡 ...
- 2018.09.22 atcoder Snuke's Coloring 2(线段树+单调栈)
传送门 就是给出一个矩形,上面有一些点,让你找出一个周长最大的矩形,满足没有一个点在矩形中. 这个题很有意思. 考虑到答案一定会穿过中线. 于是我们可以把点分到中线两边. 先想想暴力如何解决. 显然就 ...
随机推荐
- springVC + logback
为什么用logback,而不是log4j? springmvc log只输出到console,不输出到文件 Spring MVC集成slf4j-logback springMVC如何配置logback ...
- Overcoming Life's Obstacles - ASC 2017 March 03-04
<Overcoming Life's Obstacles - How a top oboist overcame a neurological disorder to play again> ...
- springboot不能加载*.properties
代码检查了无数遍!这是在intellij IDEA 下!!! 如图,这些配置文件直接放在sms-server下面,并没有放在sms-server/src/main/resources下面,所以不是cl ...
- kubectl 获取信息
获取pod所在节点的ip kubectlget po tiller-deploy-8694f8fddc-c2rql -n kube-system -o jsonpath='{.status.hostI ...
- ubuntu修改运行级别方法
Ubuntu系统设置启动级别的问题,因自己以前遇到过,故做过笔记记录了下来:Ubuntu.Debian系列与RedHat.CentOS启动级别含义有所区别:Ubuntu系列运行级别定义如下:0 – H ...
- 这两天的刷机+Root
最近为了研究Xposed框架的搭建使用,将自己红米Note2尝试root后,开不了机了.后使用(网上下载的线刷宝,刷的官网线刷宝成功开机了,然后里面会自带很多软件,然后通过下载KingRoot将手机自 ...
- HTML的实际演练2
1.html 换行: 如果你想在不产生新的段落下换行,就使用<br/><p>tishi is a praskdjf<br/>ldkfldj</p> 2. ...
- sqldatareader无法得到output参数的解决
只需要在所有的sqldatareader结束后,加上一句就可以得到输出参数了. sdr.Close(); Object ObjCount = cmd.Parameters["@Count_P ...
- 55. Jump Game (Array; Greedy)
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- 安装Oracle客户端寻找配置文件tnsnames.ora
# tnsnames.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\network\admi ...