社区讨论
单哈希TLE求助
CF898FRestoring the Expression参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lyyc1ejl
- 此快照首次捕获于
- 2024/07/23 19:28 2 年前
- 此快照最后确认于
- 2024/07/23 20:34 2 年前
为什么会T,不理解。。。
CPP#include<bits/stdc++.h>
#define ll unsigned long long
using namespace std;
string s;
ll n,p[100005],hx[100005];
void init(){
for(ll i=1;i<=n;i++)
hx[i]=hx[i-1]*10+(s[i]-'0');
p[0]=1;
for(ll i=1;i<=n;i++)
p[i]=p[i-1]*10;
}
inline ll get(ll x,ll y){
return hx[y]-hx[x-1]*p[y-x+1];
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>s;s='.'+s;n=s.size()-1;
init();
// while(1){
// ll x,y;cin>>x>>y;
// cout<<get(x,y)<<endl;
// }
for(ll k=1;n-k-k>=1;k++){
if(get(1,k)+get(k+1,n-k)==get(n-k+1,n)){
for(ll i=1;i<=k;i++)cout<<s[i];cout<<"+";
for(ll i=k+1;i<=n-k;i++)cout<<s[i];cout<<"=";
for(ll i=n-k+1;i<=n;i++)cout<<s[i];
return 0;
}
if(get(1,k)+get(k+1,n-k-1)==get(n-k,n)){
for(ll i=1;i<=k;i++)cout<<s[i];cout<<"+";
for(ll i=k+1;i<=n-k-1;i++)cout<<s[i];cout<<"=";
for(ll i=n-k;i<=n;i++)cout<<s[i];
return 0;
}
if(get(1,n-2*k)+get(n-2*k+1,n-k)==get(n-k+1,n)){
for(ll i=1;i<=n-2*k;i++)cout<<s[i];cout<<"+";
for(ll i=n-2*k+1;i<=n-k;i++)cout<<s[i];cout<<"=";
for(ll i=n-k+1;i<=n;i++)cout<<s[i];
return 0;
}
if(get(1,n-2*k-1)+get(n-2*k,n-k-1)==get(n-k,n)){
for(ll i=1;i<=n-2*k-1;i++)cout<<s[i];cout<<"+";
for(ll i=n-2*k;i<=n-k-1;i++)cout<<s[i];cout<<"=";
for(ll i=n-k;i<=n;i++)cout<<s[i];
return 0;
}
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...