Cette fois, dans le problème ABC132_D du contenu AtCoder, le WA (réponse incorrecte) de ce que je pensais n'était pas couvert, et pourquoi la sortie était-elle incorrecte dans mon implémentation? Je l'ai posté parce que je voulais résoudre le problème fondamental. De plus, les exemples d'entrée 1 et 2 publiés dans le problème ont été supprimés.
Page de référence: https://atcoder.jp/contests/abc132/tasks/abc132_d --- Début de la citation --- Il y a des boules bleues K et des boules rouges N-K. Les boules de la même couleur sont indiscernables. Sunuke et Takahashi jouent avec ces balles.
Tout d'abord, M. Sunuke arrange N boules d'affilée de gauche à droite.
Ensuite, M. Takahashi, parmi ceux-ci, K Ne récupérez qu'une seule boule bleue. Takahashi peut collecter autant de balles bleues qu'il le souhaite d'affilée en une seule opération. Takahashi agit toujours pour minimiser le nombre d'opérations nécessaires pour collecter K. boules bleues.
De combien de façons Takahashi peut-il organiser les balles dont Takahashi a besoin pour fonctionner exactement i fois pour collecter K balles bleues? 1 ≤ i ≤ K Satisfait i Calculez la réponse pour chacun et répondez au reste divisé par 10 ^ 9 + 7.
Contrainte 1≤K≤N≤2000
contribution L'entrée est donnée à partir de l'entrée standard dans le format suivant.
N K
production Sur la ligne i (1 ≤ i ≤ K), affichez le reste du nombre total de boules dont Takahashi a besoin pour fonctionner exactement i fois divisé par 10 ^ 9 + 7. --- Fin de citation ---
Main.java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
sc.close();
for(int i = 1;i <= K;i++) {
long combi1 = combination(N-K+1,i);
long combi2 = combination(K-1,i-1);
System.out.println(combi1*combi2%1_000_000_007);
}
}
public static long combination(int i,int j) {
if(j==0) {
return 1;
}
return combination(i-1,j-1)* i / j;
}
}
Je vous serais reconnaissant de bien vouloir signaler ce qui précède.
Recommended Posts