位置桁の合計(位置に基づく2つの数値の桁の合計)

ラーマクリシュナ

私はウェブサイトで練習問題に取り組んでいて、ある時点で立ち往生しました。

質問は:

桁数の合計

プログラムは、2つの正の整数を入力として受け入れ、それらの単位桁、10桁などの合計を出力する必要があります。

入力形式:最初の行には、スペースで区切られたAとBが含まれます。

出力形式:最初の行には、単位桁数、10桁目などの合計が含まれ、値はスペースで区切られます。

境界条件:1 <= A、B <= 9999999

入力/出力の例1:入力:23 49

出力:12 6

入力/出力の例2:入力:12456 687

出力:13 13 10 2 1

問題は解決しましたが、6つのテストケース(非表示)のうち、5つのケースが合格し、1つのケースが不合格でした。

これは私のコードです:

a,b = input().split()
assert 1<=len(a)<=7 and 1<=len(b)<=7
assert a.isdigit() == True and b.isdigit() == True
if len(a)>1 and len(b)>1:
    assert a[0] != '0' and b[0] != '0'
h = []
m = []
def pp(a,b):
    c = []
    for i in range(1,len(a)+1):
        x = int(a[-i])+int(b[-i])
        c.append(x)
    return c
if len(a)==len(b):
    g = pp(a,b)
    y = [str(i) for i in g]
    for i in range(0,len(y)-1):
        y[0] = y[0]+' '+y[1]
        y.remove(y[1])
    print(y[0])
if len(a)>len(b):
    d = abs(len(a)-len(b))
    for i in range(0,d):
        h.append(a[i])
        r = a.replace(a[0:d],'')
    p = pp(r,b)
    p = p+h[::-1]
    t = [str(i) for i in p]
    for i in range(0,len(t)-1):
        t[0] = t[0]+' '+t[1]
        t.remove(t[1])
    print(t[0])
if len(a)<len(b):
    d = abs(len(a)-len(b))
    for i in range(0,d):
        m.append(b[i])
        u = b.replace(b[0:d],'')
    q = pp(a,u)
    q = q + m[::-1]
    e = [str(i) for i in q]
    for i in range(0,len(e)-1):
        e[0] = e[0]+' '+e[1]
        e.remove(e[1])
    print(e[0])

私は初心者なので、単純なPythonコードのみを使用したため、長すぎました。確認しましたが、何が問題なのかわかりませんでした。何か助けはありますか?

モイヌディンの写真

itertools.zip_longest()Python 3.x(itertools.izip_longest()Python 2.7と同等)で次のように使用すると、非常に単純化された方法で実行できます

>>> from itertools import zip_longest
>>> a = 123
>>> b = 67891

>>> [sum(map(int, x))for x in zip_longest(str(a)[::-1], str(b)[::-1], fillvalue=0)]
[4, 11, 9, 7, 6]

説明:ステップツーステップの中間結果を使用すると、上記のリスト内包表現が得られます。

  1. 反復可能にするためintstr値をタイプキャストします両方の反復可能オブジェクトを逆にして、正しい10の累乗(次のステップで必要)と並行して反復できるようにしました。

    >>> str(a)[::-1]
    '321'
    
  2. 次にzip_longest、両方の反復可能オブジェクトを並行して反復するために、それらを使用しました。例えば:

    >>> list(zip_longest(str(a)[::-1], str(b)[::-1], fillvalue=0))
    [('3', '1'), ('2', '9'), ('1', '8'), (0, '7'), (0, '6')]
    
  3. を使用mapして、上記のサブリストの各文字列値を次のようにタイプキャストしますint

    >>> list(map(int, ('3', '1')))
    [3, 1]
    
  4. 次に、を使用sumして、上記のリストに値を追加します。

    >>> sum([3, 1])
    4
    

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

数値の桁の合計

分類Dev

数値の桁の合計

分類Dev

値に基づく2つのテーブル列の合計

分類Dev

桁の位置に基づいて数値内の桁を乗算する

分類Dev

数値の積、合計、および桁

分類Dev

C#合計が9に等しい場合、数値の桁の合計

分類Dev

Swiftで数値の桁の合計を見つける

分類Dev

位置に基づいて整数の値を合計する方法は?

分類Dev

再帰的な桁数の合計を1桁の数値に減らします

分類Dev

col値に基づくMySQLの合計

分類Dev

親に基づく子の合計値

分類Dev

複数の行に基づく合計

分類Dev

SQLの数値と桁の合計を逆にします

分類Dev

Javaの桁の合計

分類Dev

複数の条件に基づくExcelの合計値

分類Dev

2つのgroupbyに基づくSQLの合計

分類Dev

2つの列に基づくrの累積合計

分類Dev

python-2 ^ 1000の桁の合計?

分類Dev

Mongo-名前に基づく値の合計の集計

分類Dev

2つの数値の間の桁の合計を見つけようとしています

分類Dev

数値のすべての桁の再帰的な合計

分類Dev

Excelの基準に基づく合計

分類Dev

桁の合計がx * mの桁の合計に等しい数xの数を数えます

分類Dev

再帰を使用した数値の奇数桁と偶数桁の合計

分類Dev

2つの大きなchar型の最上位桁の合計

分類Dev

配列内の回文数の1桁の合計を見つけるには

分類Dev

配列内の回文数の1桁の合計を見つけるには

分類Dev

Whileを使用した数値の桁の合計

分類Dev

数値の桁の合計を求める(cで)

Related 関連記事

ホットタグ

アーカイブ