PTA1010一元多项式求导C#Java版

Java版:

import java.util.Scanner;public class Main {    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner sc = new Scanner(System.in);
        String in = sc.nextLine();
        String array[] = in.split("\\s+");        int sum= array.length;        int out[] =  new int[sum];
        for(int h=0;h<sum;h=h+1) {            out[h]=Integer.parseInt(array[h]);
        }

        String outString = "";
        for(int i = 0;i<sum;i=i+2) {            if(out[i]==0&&out[i+1]==0) {
                outString =outString +0+" "+0+" ";
            }            if(out[i]!=0&&out[i+1]!=0) {
                outString = outString+out[i]*out[i+1]+" "+(out[i+1]-1)+" ";
            }
        }        if(outString=="") {
            outString = outString +"0 0";
        }        System.out.print(outString.trim());

    }

}

C#版:

using System;
using System.Collections.Generic;
namespace _1010
{
    class Program
    {
        static void Main(string[] args)
        {
                string strIn = Console.ReadLine();
           //     var strArray = strIn.Split(' ',StringSplitOptions.RemoveEmptyEntries);
                var strArray = strIn.Split(' ');
               // List<String> listStr = new List<string>(strArray);
                String strOut = string.Empty;
               List<String> listStrCopy = new List<string>();
                foreach (var item in strArray)
                {
                    if (item!="")
                    {
                        listStrCopy.Add(item);
                    }
                }
                for (int i = 0; i < listStrCopy.Count; i += 2)
                {
                    int befor = int.Parse(listStrCopy[i]);
                    int after = int.Parse(listStrCopy[i + 1]);
                    if (befor == 0 && after == 0)
                    {
                        strOut += "0 0" + " ";
                        continue;
                    }
                    if (befor != 0 && after != 0)
                    {
                        strOut += befor * after + " " + (after - 1) + " ";
                    }
                    if (strOut == "")
                    {
                        strOut += "0 0 ";
                    }
                }
                //strOut = strOut.Substring(0, strOut.Length - 1);
                strOut = strOut.Trim();
                Console.WriteLine(strOut);
        }
    }
}

上述JAVA版来源于网络(抱歉,链接贴上会没了……)

C#版为小子所写,由于PTA在解析C#程序时总是出错,于是就在网上看了下他人写的版本,发现自己的没什么问题……但由于PTA不能解析:  var strArray = strIn.Split(' ',StringSplitOptions.RemoveEmptyEntries);
于是不得不用一个for each来搞定。

题意的理解也很关键,给出的说明和示例,小子开始完全没看明白,怪我语文差了……

设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为nxn−1。)
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。
输入样例:
 2   0
输出样例:
 -10 1 

以下为个人解题时理解,如下:

3 4   3是系数,4是指数   

6 1   6是系数,1是指数

12 3  为输入(3 4)所计算值

6 0   为输入6 1所计算值

明白上述之后,要求的输入输出就好办了……

1.系数与指数都为0时,需要输出 “0 0”
2.系数与指数都不为0,需要按求导规则,计算出系数与指数,并输出
3.系数与指数有一个为0时,按示导规则,无输出

4.输入中要避免出现多个空格,若出现多个空格,程序要能识别并排除,这就比较坑了,因为题意中并没有相关要求。
(0)

相关推荐