1 / 5
Oct 2020

Witam napisałem taki kod (C#)
dostaję błędną odpowiedź
Dodałem to ograniczenie do silni 20 bo wczesniej dostawałem przekroczono czas
help

    private static double sil( double x)
    {
    if(x==0) return 1;
    else return x*sil(x-1);
    }
    public static void Main(string[] args)
    {
      
       int zero=0;
        int menu;
        menu= Int32.Parse(Console.ReadLine());
         double[] a= new double[menu];
        
         string[] s= new string[menu];
        
      for (int x=0; x<menu; x++)
        {
           a[x]=Double.Parse(Console.ReadLine());
          if(a[x]>20){
          break;
          }
          else
          a[x]=sil(a[x]);
          s[x]=a[x].ToString(s[x]);
          
          if(s[x].Length<2){   
           Console.WriteLine("{0} {1}",zero,char.GetNumericValue(s[x],s[x].Length-1));
          }
          else 
              Console.WriteLine("{0} {1}",char.GetNumericValue(s[x],s[x].Length-2),char.GetNumericValue(s[x],s[x].Length-1));
      }
        
    }
  • created

    Oct '20
  • last reply

    Oct '20
  • 4

    replies

  • 728

    views

  • 3

    users

  • 1

    like

  • 1

    link

Ograniczyłeś do 20? Mam lepszy pomysł. Ogranicz dane wejściowe do przypadku:
2
1
4
wtedy wynik na pewno będzie dobry :grinning:

Otóż to… :slight_smile:
Skoro tam jest podane, że zakres liczb wejściowych jest do 1 000 000 000 to jakim prawem ograniczasz to do 20? Jeśli Ty możesz ograniczyć się do 20 liczb to dlaczego ja nie mogę ograniczyć się do 2? Jeśli przemyślisz skąd biorą się problemy z takimi danymi może wpadniesz w inny, znacznie prostszy to rozumowania