Math 06小数(2581)


Math 06小数(2581)


質問する


自然数MとNが与えられた場合、M以上N以下の自然数の中からすべての小数を選択し、これらの小数の和の最大値を探すプログラムを書き出します.
例えばM=60、N=100、60以上100以下の自然数のうち、61、67、71、73、79、83、89、97の計8個があり、これらの数の和は620であり、最大値は61である.

入力


入力された第1行M、第2行N.
MとNは10000以下の自然数であり、MはN以下である.

しゅつりょく


M以上N以下の自然数のうちの少数を探し出し,第1行でその和を出力し,第2行でその中の最大値を出力する.
ただし、M以上N以下の自然数に少数がなければ、1行目に−1が出力される.

に答える

  • arrアレイ1~a,bの最大値は0初期化
  • である.
  • 2からaおよびbまでの最大値が0の場合、res配列に
  • の値を追加する.
  • を追加するarrアレイ1を使用して
  • を初期化する.
  • は、最初に0の値(すなわち小数)をresに追加し続け、その値の倍数を1からarrに初期化する
  • slice機能、aからbまで
  • 遮断配列値を文として確認し、0またはmin値と比較保存&累計
  • コード#コード#

    import sys
    sys.stdin = open("input.txt","rt")
    
    def input():
        return sys.stdin.readline().rstrip()
    
    a =int(input()) 
    b =int(input()) 
    
    N = max(a,b)
    sum = 0
    
    res = [0]*(N+1)
    arr= [0]*(N+1)
    minNum = 2147000000
    for i in range(2,b+1):
        if arr[i]==0:
            res[i] = i
            for j in range(i,N+1,i):
                arr[j] = 1
    
    res = res[min(a,b):max(a,b)+1]
    if max(res) == 0:
        print(-1)
        exit()
    
    for x in res:
        if x != 0:
            sum += x
            if x < minNum:
                minNum = x
    print(sum)
    print(minNum)
    
    
    

    学識


    小数点を探す方法は排水を検査することです

    コメント