結果
問題 |
No.81 すべて足すだけの簡単なお仕事です。
|
ユーザー |
![]() |
提出日時 | 2016-02-25 02:14:28 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,591 bytes |
コンパイル時間 | 516 ms |
コンパイル使用メモリ | 59,848 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-22 13:38:35 |
合計ジャッジ時間 | 1,400 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 14 WA * 16 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:93:9: warning: ‘big’ may be used uninitialized [-Wmaybe-uninitialized] 93 | if(big==0) sminus(psum,msum,ans); | ^~
ソースコード
#include<iostream> #include<string> using namespace std; #define NMAX 100 string expend(string s){ bool dotf=false; bool minusf=false; int doti=-1; int ints=-1,fews=-1; string ret=""; for(int i=0;i<s.size();i++){ if(s[i]=='.') doti=i,dotf=true; if(s[i]=='-') minusf=true; } if(dotf){ ints=doti-minusf; fews=s.size()-ints-1; } else{ ints=s.size()-minusf; fews=0; } if(minusf) ret+='-'; else ret+='+'; for(int i=0;i<20-ints;i++){ ret+='0'; } for(int i=minusf;i<s.size();i++){ if(s[i]=='.') continue; ret+=s[i]; } for(int i=0;i<10-fews+minusf;i++){ ret+='0'; } return ret; } void sminus(int b[30],int s[30],int ans[30]){ int bk=0,kuri=0; for(int i=29;i>=0;i--){ while(b[i]-s[i]-bk<0){ kuri++; b[i]+=10; } ans[i]+=(b[i]-s[i]-bk)%10; bk=kuri; kuri=0; bk-=(b[i]-s[i]-bk)/10; } } int main(){ int N; string A[NMAX]; int msum[30],psum[30]; int ans[30]; cin>>N; for(int i=0;i<N;i++){ cin>>A[i]; A[i]=expend(A[i]); } for(int i=0;i<30;i++){ msum[i]=0; psum[i]=0; ans[i]=0; } for(int i=0;i<30;i++){ for(int j=0;j<N;j++){ if(A[j][0]=='-') msum[i]+=A[j][i+1]-'0'; else psum[i]+=A[j][i+1]-'0'; } } int big;/*0:plus 1:minus*/ for(int i=0;i<30;i++){ if(psum[i]==msum[i]) continue; else{ if(psum[i]>msum[i]) big=0; else big=1; break; } } if(big==0) sminus(psum,msum,ans); else sminus(msum,psum,ans); bool zf=false; if(big==1) cout<<"-"; for(int i=0;i<20;i++){ if(ans[i]!=0) zf=true; if(zf) cout<<ans[i]; } cout<<"."; for(int i=20;i<30;i++){ cout<<ans[i]; } cout<<endl; }