для того чтобы узнать сколько нужно было бы защиты группе у которой проигрышь в силе нужно сделать следующий рассчет
исходная задача:
сила1 = 1000
сила2 = 1500
защита1=? 
защита2=2500
условие победы: при условии когда защита2 после боев будет равна защите1, сила1 должна быть больше силы2
дополнение: после боя защита уменьшается на силу противника. и исходя из коэфициента начального *коэфициент = сила/защиту* рассчитывается сила для следующего боя
решение которое у меня в голове вертится только цикл составить
шаг_цикла = 10;
сила1=1000;
защита1=3000;
сила2 = 1500;
защита2 = 2500;
кф2=рассчет_коэф(сила2, защита2); 
while(1){
  кф1=рассчет_коэф(сила1, защита1); 
  результат = вызов_рекурсии_боев(сила1, защита1, сила2, защита2);
  если(результат)выход_из_цикла;
  защита1 += шаг_цикла;
}
вызов_рекурсии_боев(сила1, защита1, сила2, защита2){
  защита1 = защита1 -сила2;
  защита2 = защита2 -сила1;
  сила1 = защита1*кф1;
  сила2 = защита2*кф2;
 если(сила1<0 or сила2<0 )вернуть false;#экстреный выход из рекурсии
 следующий_бой = (защита1 -сила2) - (защита2 -сила1);
 
 если( следующий_бой > 0 ){
   если (сила1>силы2) вернуть true;
   рез_рекурсии = вызов_рекурсии_боев(сила1, защита1, сила2, защита2);
   возврат рез_рекурсии;
 }
 или если(следующий_бой == 0){
  если (сила1>силы2) вернуть true;
  вернуть false;
 }
 или{
    вернуть false; 
 }
}
ну может както так наверно ))) хотя возможно есть вариант и получше
может какнибудь так???