【解決方法】 Modulo 積の忍者は教授から簡単な課題を与えられましたが、これを解くことができません。 したがって、彼は任務を完了するためにあなたの助けが必要です。


モジュロ積
忍者は教授から簡単な課題を出されましたが、それを解くことができません。 したがって、彼は任務を完了するためにあなたの助けが必要です。
この割り当てでは、2 つの整数 A と B が与えられ、1 から A までのすべての数値の積を B を法として出力する必要があります (1 と A は両端を含みます)。
たとえば、A=5 および B=7 の場合、答えは ( 1 * 2 * 3 * 4 * 5 ) % 7 = 1 となるため、最終的な答えは 1 になります。
入力形式:
入力の最初の行には、テスト ケースの数を示す整数 T が含まれます。
すべてのテスト ケースは 1 行で構成され、その行には 2 つの整数 A と B が含まれます。
制約:
1<=T<=50
1<=A<=10^9
1<=B<=10^5
制限時間:1秒
出力フォーマット:
すべてのテスト ケースについて、出力を改行で出力します。
サンプル入力 1
4
8 10
5 140
18 19
20 21
サンプル出力 1:
0
120
18
0

私が試したこと:

Java
import java.util.Scanner;

public class ModuloProduct {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int t = scanner.nextInt(); // number of test cases
        
        while (t > 0) {
            int a = scanner.nextInt(); // value of A
            int b = scanner.nextInt(); // value of B
            
            int result = moduloProduct(a, b);
            System.out.println(result);
            
            t--;
        }
        
        scanner.close();
    }
    
    private static int moduloProduct(int a, int b) {
        int product = 1;
        
        // Calculate the product of all numbers from 1 to A
        for (int i = 1; i <= a; i++) {
            product = (product * i) % b;
        }
        
        return product;
    }
}

解決策 1

この部分は間違っていると思います*:

Java
for (int i = 1; i <= a; i++) {
    product = (product * i) % b;
}
return product;

試す:

Java
for (int i = 1; i <= a; i++) {
    product = product * i;
}
return product % b;

※読み方にもよりますが、 「1 から A を法 B までのすべての数値の積」

コメント

タイトルとURLをコピーしました