PTA A1001&A1002

毎日、今日ブラシグレード1-2 PATの質問を開始

A1001 A + Bフォーマット(20分)

タイトル内容

(以下4桁がない限り)つまり、数字がカンマで3のグループに分離されなければならない - + bと出力標準フォーマットで和を計算します。

入力仕様:

各入力ファイルには、1つのテストケースが含まれています。各ケースは、整数A及びB -10一対含ま6 ≤a、b≤10 6数値は、スペースで区切られます。

出力仕様:

各テストケースの場合、1行に出力aとbの和はずです。合計は、標準形式で記述する必要があります。

サンプル入力:

-1000000 9

サンプル出力:

-999991

単語

カンマ

N [言語]コンマ(コンマ複合体)

トピック分析

すべての3桁があまり厳しくあり、特に理由はなく、すべての3個の数字からの標準出力、コンマ標準フォーマット(ここでは、ここでプラグ、個人的な感情への入力二つの数字、計算の結果を先頭または最初から最後は、私はそれが2000年、200,0ですが、この問題は、実際に2000をする必要があります2000年の終わりからカウントされ、入力と出力のサンプルが最後に見ることができないように、と考え始めからだと思いましたこれは、先頭または数の終わりからカウントされ、)私はACを受け入れることは非常に困難となっていることができなかった原因。
タイトルは、私はそれを読み違える好きされていない場合は、この質問は、2つの方法である必要があり、1はデジタル処理で、私がこのように行われた最初の時点で、オペレータは徐々に出力丸め以上かかるために組み合わせます。最初のシンボルが負であるので、2番目の文字列は、正または負のケースのように、文字列はsprintfデジタル変換で処理し、次いで挿入配列表と同様すべての3 A「」の端部から挿入されています- 。

特定のコード

#含める
 
 
  
  
#含める
  
  
   
   
#define MAXSIZE 20 
   
INTメイン(ボイド)
   
{ 
   
    int型、B。
   
    scanf関数( "%D%dの"、&、&B)。
   
    チャーC [MAXSIZE]。
   
    sprintf(C、 "%のD"、A + B)。
   
    int型M = 0; 
   
    (!C [M] = '\ 0')M ++中。
   
    int型N = M; 
   
    IF(A + B> 0)
   
    { 
   
        ため(INTはn = 1;(M - 3 * n)が> 0であり; n ++)
   
        { 
   
            ため(INT M = N - 1、M> = M - 3 * N; M-- )
   
                C [M + 1] = C [M]。
   
            C [M - 3 *のN] = ''。N ++; 
   
        } 
   
    } 
   
   
    { 
   
        ため(INTはn = 1;(M - 3 * n)が> 1であり; n ++)
   
        {
    
            (INT、M = Nのために- 1、M> = M - 3 * N。
   
                C [M + 1] = C [M]。
   
            C [M - 3 *のN] = ''。N ++; 
   
        } 
   
    } 
   
    C [N] = '\ 0'。
   
    printf( "%sの"、C)。
   
    システム(「一時停止」)。
   
}
  
  
 
 

多項式のための1002 A + B(25分)

タイトル内容

入力仕様:

ACH入力ファイルには、1つのテストケースが含まれています。各ケースには2行を占め、各ラインは、多項式の情報が含ま:
KN 1 Nを1 N 2 N 2 ... N K N K
K多項式における非ゼロ項の数であり、N I及びN I(I = 1,2、⋯、K)は、それぞれ、指数および係数です。それは、その与えられ1≤K≤10,0≤N K <⋯<N 2 <N 1 ≤1000。

出力仕様:

各テストケースのためには、入力と同じ形式の1つのラインの出力AとBの合計を、すべきです。各行の末尾に余分なスペースがあってはならないことに注意してください。小数第1位まで正確でください。

サンプル入力:

2 1 2.4 0 3.2
2 2 1.5 1 0.5

サンプル出力:

3 2 1.5 1 2.9 0 3.2

単語

多項式

英語/、pɒlɪ'nəʊmɪəl/ US /、pɑlɪ'nomɪəl/

。nは多項式;マルチワードラテン名、任意の数の数を表し
ADJ複数、複数の単語を、多項式の

指数

英語/ɪk'spəʊnənt; EK-/ US /ɪk'sponənt/

N [番号]インデックスは、典型的には、記載した言い方をすれば

N。提唱者、擁護者、代理人、支持者は
形容詞。イラスト

係数

英/kəʊɪfɪʃ(A)NT /美/koʊəfɪʃənt/

N- [C]係数;速度;補因子
ADJ協力相互作用;.

小数

英/ 'desɪm(G)L /美/' dɛsɪml/

。N-小数
ADJ小数;.小数点

トピック分析

多項式加算は、小さなインデックス範囲ため、アレイは添え字を用いて、構築することができるインデックス、係数対応する要素を表すので、コードは非常に簡略化することができます。
最初に私は、構造体の3つの配列を行うには少し愚かな方法を使用し、そのインデックスが減少し、デフォルトの入力モードに基づいているので、そこに2つのテスト・ポイントがありませんでしたして、そして今もエラーコードを一緒にしています掲載。

特定のコード

正しいです

#含める
 
 
  
  
#含める
  
  
   
   
#define MAXSIZE 1001 
   
int型のn; 
   
ダブルM [MAXSIZE]。
   
INTのK = 0。

   
INTメイン(ボイド)
   
{ 
   
    scanf関数( "%のD"、&N); 
   
    以下のために(; iがn <I ++は、I = 0 INT)
   
    { 
   
        int型Eを、
   
        ダブルC; 
   
        scanf関数( "%dの%のLF"、&E、およびC)。
   
        M [E] + = C。
   
    } 
   
    のscanf( "%d個"、&N); 
   
    以下のために(; iがn <I ++は、I = 0 INT)
   
    { 
   
        int型Eを、
   
        ダブルC; 
   
        scanf関数( "%dの%のLF"、&E、およびC)。
   
        M [E] + = C。
   
    } 
   
    (; iがMAXSIZEを<I ++は、I = 0の整数)のための
   
        (M [i]が!= 0)場合
   
          、K ++。
   
    printf( "%dの"、K)。
   
   
    {
   
        IF(M [I]!= 0)
   
        { 
   
            のprintf( "%D%.1f"、I、M [I])。
   
        } 
   
    } 
   
}

  
  
 
 

エラー

#含める
 
 
  
  
#含める
  
  
   
   
#define MAXSIZE 10 

   
構造体A { 
   
    int型、E。
   
    フロートC; 
   
}。

   
構造体A [MAXSIZE]。
   
構造体B [MAXSIZE]。
   
構造体C [MAXSIZE]。

   
整数M、N、K。

   
INTメイン(ボイド)
   
{ 
   
    int型M、N。
   
    scanf関数( "%のD"、&M)。
   
    (I 0 = int型、iがMを<; I ++の)のため
   
        のscanf( "%D%F"、&A [i]が.E、&A [i]が.C)を、
   
    scanf関数( "%のD"、&N)。
   
    (I 0 = int型、iがNを<; I ++の)のため
   
        のscanf( "%D%F"、&B [i]は.E、&B [i]は.C)。
   
    INT p = 0、q = 0で、
   
    一方、(!p = M && Q = N)
   
    { 
   
        IF([P] .E> B [Q] .E)
   
        { 
   
            C [K] .C = A [P] .C。
   
   
            K ++; 
        }
   
            P ++;
   
        } 
   
        そうであれば([P] .E == B [Q] .E)
   
        { 
   
            C [K] .C = A [P] .C + B [Q] .C。
   
            C [K] .E = A [P] .E。
   
            K ++; 
   
            P ++; 
   
            Q ++; 
   
        } 
   
        そうであれば([P] .E <B [Q] .E)
   
        { 
   
            C [K] .C = B [P] .C。
   
            C [K] .E = B [P] .E。
   
            K ++; 
   
            Q ++; 
   
        } 
   
    } 
   
    もし(P == M)
   
        一方、(Q = N!)
   
        { 
   
            C [K] .C = B [P] .C。
   
            C [K] .E = B [P] .E。
   
            K ++; 
   
            Q ++; 
   
    それ以外の場合(Q == N)
   
        しばらく(P!= M)
    
        { 
   
            C [K] .C = A [P] .C。
   
            C [K] .E = A [P] .E。
   
            K ++; 
   
            P ++; 
   
        } 
   
    のprintf( "%dの"、K)。
   
    以下のために(INT i = 0; iはKを<; iは++)
   
    { 
   
        IF(I == K - 1)
   
            のprintf( "%D%.1f"、C [i]の.E、C [i]の.C)。
   
   
            のprintf( "%D%.1f"、C [i]の.E、C [i]の.C)。
   
    } 
   
}
  
  
 
 

おすすめ

転載: www.cnblogs.com/z-y-k/p/11517248.html