結果
| 問題 |
No.81 すべて足すだけの簡単なお仕事です。
|
| コンテスト | |
| ユーザー |
cureskol
|
| 提出日時 | 2020-03-29 15:54:07 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,719 bytes |
| コンパイル時間 | 1,727 ms |
| コンパイル使用メモリ | 163,452 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2025-01-02 13:55:36 |
| 合計ジャッジ時間 | 2,450 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 22 WA * 8 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ld=long double;
#define int long long
const int M=10000000000;
int f(string s){
if(s[0]=='-'){
int res=0;
for(int i=1;i<s.size();i++){
if(s[i]=='.')return -res;
res*=10;
res+=s[i]-'0';
}
return -res;
}
int res=0;
for(int i=0;i<s.size();i++){
if(s[i]=='.')return res;
res*=10;
res+=s[i]-'0';
}
return res;
}
int g(string s){
int cnt=0;
if(s[0]=='-'){
int i=1,res=0;
while(i<s.size()&&s[i]!='.')i++;
for(i++;i<s.size();i++){
res*=10;cnt++;
res+=s[i]-'0';
}
while(cnt++<10)res*=10;
return -res;
}
int i=0,res=0;
while(i<s.size()&&s[i]!='.')i++;
for(i++;i<s.size();i++){
res*=10;cnt++;
res+=s[i]-'0';
}
while(cnt++<10)res*=10;
return res;
}
signed main(){
int n;cin>>n;
int ans1=0,ans2=0;
while(n--){
string s;cin>>s;
ans1+=f(s);
ans2+=g(s);
}
if((ans1>=0)^(ans2>=0)){
if(ans1>0){
ans2*=-1;
if(1+ans2/M<=ans1){
ans1-=1+ans2/M;
ans2=(1+ans2/M)*M-ans2;
cout<<ans1<<"."<<ans2;
}
else{
ans1-=ans2/M;
ans2%=M;
cout<<ans1<<"."<<ans2;
}
}
else{
ans1*=-1;
if(1+ans2/M<=ans1){
ans1-=1+ans2/M;
ans2=(1+ans2/M)*M-ans2;
cout<<'-'<<ans1<<"."<<ans2;
}
else{
ans1-=ans2/M;
ans2%=M;
cout<<ans1<<"."<<ans2;
}
}
}
else{
if(ans1>0){
ans1+=ans2/M;
ans2%=M;
cout<<ans1<<"."<<ans2;
}
else{
ans1*=-1;ans2*=-1;
ans1+=ans2/M;
ans2%=M;
cout<<-ans1<<"."<<ans2;
}
}
if(!ans2)for(int i=0;i<9;i++)cout<<0;cout<<endl;
}
cureskol