#24387: 請問line22是有甚麼特例嗎? 一直卡在這


angus.93321@gmail.com (bluemoon0321)

學校 : 國立科學工業園區實驗高級中學
編號 : 139711
來源 : [114.136.48.221]
最後登入時間 :
2021-08-21 11:35:29
e294. APCS 類似題 - 小崴的新發現 -- 小崴系列APCS | From: [114.137.148.112] | 發表日期 : 2021-02-11 15:11

#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'; } }

 

 
#26892: Re:請問line22是有甚麼特例嗎? 一直卡在這


luray0601@gmail.com (QWERTYPIG)

學校 : 臺北市私立復興實驗高級中學
編號 : 139334
來源 : [140.112.238.240]
最後登入時間 :
2024-11-19 19:45:37
e294. APCS 類似題 - 小崴的新發現 -- 小崴系列APCS | From: [111.250.129.72] | 發表日期 : 2021-08-30 22:20

#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範圍大



 
ZeroJudge Forum