【洛谷2022】 神奇数学题
2016-10-31 20:03
211 查看
算法过程:先算出比现在小的有多少个,和之后在末尾添加能够优化的数量分别记录为cnt,p;
然后因为每多一位P*10即可。
标程来自网络单纯叙述题解的解法。
//copy 标程 特注明
#include<cstdio>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
ll N,M,K,cnt,base=1;
ll fj[21],s[21];
void get(ll x)
{
ll t=0;
while (x){s[++t]=x%10;x/=10;base*=10;}base/=10;
for (int i=1;i<=t;i++) fj[i]=s[t-i+1];
cnt+=t-1;
for (int i=t;i>=1;i--)
{
ll sum=0;
for (int j=1;j<=i;j++)
if (j!=1)sum*=10,sum+=fj[j];
else sum*=10,sum+=fj[j],sum-=1;
cnt+=sum;
}
}
int main()
{
cin>>K>>M;
get(K);
if (cnt>=M||(K==base&&cnt<M-1)) {cout<<0<<endl; return 0;}
ll p=K-base,c=K;
//cout<<p<<" "<<cnt<<endl;
for (;cnt<M-1;)
{
p*=10;c*=10;
cnt+=p;
}
//cout<<K<<" "<<c<<' '<<cnt-M+2<<endl;
N=max(K,c-(cnt-M+2));
cout<<N<<endl;
return 0;
}
}
然后因为每多一位P*10即可。
标程来自网络单纯叙述题解的解法。
//copy 标程 特注明
#include<cstdio>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
ll N,M,K,cnt,base=1;
ll fj[21],s[21];
void get(ll x)
{
ll t=0;
while (x){s[++t]=x%10;x/=10;base*=10;}base/=10;
for (int i=1;i<=t;i++) fj[i]=s[t-i+1];
cnt+=t-1;
for (int i=t;i>=1;i--)
{
ll sum=0;
for (int j=1;j<=i;j++)
if (j!=1)sum*=10,sum+=fj[j];
else sum*=10,sum+=fj[j],sum-=1;
cnt+=sum;
}
}
int main()
{
cin>>K>>M;
get(K);
if (cnt>=M||(K==base&&cnt<M-1)) {cout<<0<<endl; return 0;}
ll p=K-base,c=K;
//cout<<p<<" "<<cnt<<endl;
for (;cnt<M-1;)
{
p*=10;c*=10;
cnt+=p;
}
//cout<<K<<" "<<c<<' '<<cnt-M+2<<endl;
N=max(K,c-(cnt-M+2));
cout<<N<<endl;
return 0;
}
}
相关文章推荐
- 转:数学之美番外篇:平凡而又神奇的贝叶斯方法
- 转载贝叶斯方法的一篇佳文:数学之美番外篇:平凡而又神奇的贝叶斯方法
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- 数学之美番外篇:平凡而又神奇的贝叶斯方法(3)——刘未鹏
- 美丽的数学!神奇!
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- ACdream 1070 神奇的%系列二 (数学+二分)
- 数学之美番外篇:平凡而又神奇的贝叶斯方法(转自刘未鹏)
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- 数学之美番外篇:平凡而又神奇的贝叶斯方法(4)——刘未鹏
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- 对洛谷“提高试炼场-其他数学问题”的爆破
- [转]数学之美番外篇:平凡而又神奇的贝叶斯方法 BY:刘未鹏
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- 数学之美番外篇:平凡而又神奇的贝叶斯方法