Застрял с алгоритмом Java - PullRequest
0 голосов
/ 03 ноября 2018

Мне нужно написать алгоритм, который получает 2 числа (n и k) и печатает результат (n!%k).

Проблема в том, что мне нужно использовать только тип int для решения этой проблемы, поэтому для n=18 и k=71 он печатает -898433024. Это мой код:

import java.util.Scanner;

public class Try{
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);            
        int n = myScanner.nextInt();
        int k = myScanner.nextInt();
        int azeret = 1;
        for (int i=1; i<=n; i=i+1)
        { 
            if (i%k!=0)
                azeret = azeret * (i%k);
        }
        System.out.println(azeret);           
    }            
}

Пожалуйста, помогите мне, я действительно потерян ...

1 Ответ

0 голосов
/ 03 ноября 2018

Почти верно!

          azeret = (azeret * i) % k;

Таким образом, azeret остается между 1 и k, оба из которых могут быть представлены в int.

...