結果

問題 No.81 すべて足すだけの簡単なお仕事です。
ユーザー kuuso1kuuso1
提出日時 2014-11-28 01:08:22
言語 C#(csc)
(csc 3.9.0)
結果
WA  
実行時間 -
コード長 2,598 bytes
コンパイル時間 4,487 ms
コンパイル使用メモリ 110,028 KB
実行使用メモリ 27,076 KB
最終ジャッジ日時 2023-09-01 22:34:37
合計ジャッジ時間 7,351 ms
ジャッジサーバーID
(参考情報)
judge12 / judge15
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 WA -
testcase_01 WA -
testcase_02 WA -
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 WA -
testcase_18 WA -
testcase_19 WA -
testcase_20 WA -
testcase_21 WA -
testcase_22 WA -
testcase_23 WA -
testcase_24 WA -
testcase_25 WA -
testcase_26 WA -
testcase_27 WA -
testcase_28 WA -
testcase_29 WA -
権限があれば一括ダウンロードができます
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #

using System;
using System.Collections;
using System.Collections.Generic;
 
class TEST{
	static void Main(){
		Sol mySol =new Sol();
		mySol.Solve();
	}
}

class Sol{
	public void Solve(){
		String[] SS=new String[N];
		for(int i=0;i<N;i++){
			SS[i]=(double.Parse(S[i])).ToString("00000000000000.0000000000");
			if(SS[i][0]!='-'){
				SS[i]="+"+SS[i];
			}
		}
		
		String Plus="+00000000000000.0000000000";
		for(int i=0;i<N;i++){
			if(SS[i][0]=='+')Plus=sum(Plus,SS[i]);
		}
		
		String Minus="-00000000000000.0000000000";
		for(int i=0;i<N;i++){
			if(SS[i][0]=='-')Minus=sum(Minus,SS[i]);
		}
		
		String sig="";
		for(int i=1;i<Plus.Length;i++){
			if(Plus[i]==Minus[i])continue;
			if(Minus[i]>Plus[i]){
				sig="-";
				break;
			}
			if(Minus[i]<Plus[i]){
				break;
			}
		}
		
		String Ans="";
		if(sig=="-"){
			Ans=div(Minus,Plus).Substring(1);
		}else{
			Ans=div(Plus,Minus).Substring(1);
		}
		int cur=0;
		for(int i=0;i<=12;i++){
			if(Ans[i]!='0')break;
			cur=i;
		}
		Console.WriteLine(Ans);
		Ans=Ans.Substring(cur+1);
		Console.WriteLine(sig+Ans);
		
	}
	
	String sum(String s,String t){
		List<char> r=new List<char>();
		int NN=s.Length;
		int carry=0;
		for(int i=NN-1;i>0;i--){
			if(s[i]=='.'){
				r.Add('.');
				continue;
			}
			int d=carry+(int)(s[i]-'0'+t[i]-'0');
			r.Add((char)(d%10+'0'));
			carry=d/10;
		}
		r.Reverse();
		return s.Substring(0,1)+new String(r.ToArray());
	}
	
	String div(String s,String t){
		List<char> r=new List<char>();
		int NN=s.Length;
		int carry=0;
		for(int i=NN-1;i>0;i--){
			if(s[i]=='.'){
				r.Add('.');
				continue;
			}
			int d=carry+(int)(s[i]-'0'-(t[i]-'0'));
			carry=0;
			if(d<0){
				d+=10;
				carry=-1;
			}
			r.Add((char)(d%10+'0'));
		}
		r.Reverse();
		return s.Substring(0,1)+new String(r.ToArray());
	}
	
	
	int N;
	String[] S;
	public Sol(){
		N=ri();
		S=new String[N];
		for(int i=0;i<N;i++)S[i]=rs();
	}




	static String rs(){return Console.ReadLine();}
	static int ri(){return int.Parse(Console.ReadLine());}
	static long rl(){return long.Parse(Console.ReadLine());}
	static double rd(){return double.Parse(Console.ReadLine());}
	static String[] rsa(){return Console.ReadLine().Split(' ');}
	static int[] ria(){return Array.ConvertAll(Console.ReadLine().Split(' '),e=>int.Parse(e));}
	static long[] rla(){return Array.ConvertAll(Console.ReadLine().Split(' '),e=>long.Parse(e));}
	static double[] rda(){return Array.ConvertAll(Console.ReadLine().Split(' '),e=>double.Parse(e));}
}
0