我寫了一些代碼來解決下面的問題。我已經(jīng)嘗試了一些測(cè)試用例,它們都通過了,但是當(dāng)我提交自動(dòng)標(biāo)記的答案時(shí),結(jié)果是失敗的。我不知道問題出在哪里。這是問題和相應(yīng)的鏈接:1005 Spell It Right (20 分)給定一個(gè)非負(fù)整數(shù) N,你的任務(wù)是計(jì)算 N 的所有數(shù)字之和,并用英文輸出和的每一位數(shù)字。輸入規(guī)范:每個(gè)輸入文件包含一個(gè)測(cè)試用例。每個(gè) case 占據(jù)一行,其中包含一個(gè) N (≤10^100 )。輸出規(guī)范:對(duì)于每個(gè)測(cè)試用例,一行輸出英文單詞的和的數(shù)字。兩個(gè)連續(xù)的單詞之間必須有一個(gè)空格,但行尾不能有多余的空格。樣本輸入:12345示例輸出:one five下面是我的代碼(在提交到系統(tǒng)之前需要將類名替換為 Main ):package com.maxim.advance;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Main {public static void main(String args[]) { Scanner scanner = new Scanner(System.in); String input = scanner.nextLine(); scanner.close(); int length = input.length(); int sum = 0; for (int index = 0; index < length; index++) { sum += input.charAt(index) - '0'; } // Consider sum == 0 case; if (sum == 0) { System.out.print("zero"); } String[] names = new String[] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; List<String> outputs = new ArrayList<String> (100); while (sum > 0) { outputs.add(names[sum % 10]); sum = sum / 10; } int size = outputs.size(); for (int i = size - 1; i >= 0; i--) { if (i > 0) { System.out.print(outputs.get(i) + " "); } else { System.out.print(outputs.get(i)); } }}}下面的 C++ 代碼是正確的并且總是通過#include<bits/stdc++.h>using namespace std;int main(){string s;cin>>s;long int tmp=0;for(int i=0;i<s.size();i++){ tmp+=(s[i]-'0');}string match[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};vector<string> v;long int sum=tmp;while(sum){ v.push_back(match[sum%10]); sum/=10;}reverse(v.begin(),v.end());if(tmp==0)// cout<<"zero";elsefor(int i=0;i<v.size();i++){ if(i==0) cout<<v[i]; else cout<<" "<<v[i];}return 0;}
添加回答
舉報(bào)
0/150
提交
取消