您的答案為: 665260807
正確答案為: 4960228103
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
string s;
while(cin>>s){
if(s[0]=='a') break;
string b_s=s;
string s_s=s;
bool yes=false;
int f_num;
for(int i=0;i<s.size();i++){
if((s[i]-'0')%2==0){
yes=true;
f_num=i;
break;
}
}
if(yes==false){
cout<<0<<'\n';
continue;
}
int total=0;
int r=1;
for(int i=s.size()-1;i>=0;i--){
total+=(s[i]-'0')*r;
r*=10;
}
r=1;
int b_total=0;
for(int i=f_num+1;i<s.size();i++){
b_s[i]='1';
}
b_s[f_num]+=1;
for(int i=s.size()-1;i>=0;i--){
b_total+=(b_s[i]-'0')*r;
r*=10;
}
r=1;
int s_total=0;
if(s[f_num]==0){
for(int i=f_num;i<s.size();i++){
s_s[i]='9';
}
if(s[f_num-1]<='1'){
int z=f_num-1;
while(s[z]<=1){
s_s[z]='9';
z--;
}
s_s[z]=s_s[z]-2;
}
for(int i=s_s.size()-1;i>=0;i--){
s_total+=(s_s[i]-'0')*r;
r*=10;
}
}
else{
for(int i=f_num+1;i<s.size();i++){
s_s[i]='9';
}
s_s[f_num]-=1;
for(int i=s_s.size()-1;i>=0;i--){
s_total+=(s_s[i]-'0')*r;
r*=10;
}
}
int b=b_total-total;
int s=total-s_total;
if(b>s) cout<<s<<'\n';
else cout<<b<<'\n';
}
}
#2: 30% WA (line:22)
您的答案為: 665260807 正確答案為: 4960228103
#include<bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); string s; while(cin>>s){ if(s[0]=='a') break; string b_s=s; string s_s=s; bool yes=false; int f_num; for(int i=0;i<s.size();i++){ if((s[i]-'0')%2==0){ yes=true; f_num=i; break; } } if(yes==false){ cout<<0<<'\n'; continue; } int total=0; int r=1; for(int i=s.size()-1;i>=0;i--){ total+=(s[i]-'0')*r; r*=10; } r=1; int b_total=0; for(int i=f_num+1;i<s.size();i++){ b_s[i]='1'; } b_s[f_num]+=1; for(int i=s.size()-1;i>=0;i--){ b_total+=(b_s[i]-'0')*r; r*=10; } r=1; int s_total=0; if(s[f_num]==0){ for(int i=f_num;i<s.size();i++){ s_s[i]='9'; } if(s[f_num-1]<='1'){ int z=f_num-1; while(s[z]<=1){ s_s[z]='9'; z--; } s_s[z]=s_s[z]-2; } for(int i=s_s.size()-1;i>=0;i--){ s_total+=(s_s[i]-'0')*r; r*=10; } } else{ for(int i=f_num+1;i<s.size();i++){ s_s[i]='9'; } s_s[f_num]-=1; for(int i=s_s.size()-1;i>=0;i--){ s_total+=(s_s[i]-'0')*r; r*=10; } } int b=b_total-total; int s=total-s_total; if(b>s) cout<<s<<'\n'; else cout<<b<<'\n'; } }可以試試看把int改成long long int,畢竟10^18比int範圍大