Skocz do zawartości

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Gość robertko

Problem z zadaniem

Rekomendowane odpowiedzi

Gość robertko

Witajcie

 

Zadanie o treści https://zadania.programuj.edu.pl/c/mlodzi-mistrzowie-polskiej-infor/p/dzi/

 

Rozwiązałem Tutaj

 

public class Main {
static InputStream is;
static PrintWriter out;
static String INPUT = "";

public static void main(String[] args)
{
	is = System.in;
	out = new PrintWriter(System.out);	


	int n=ni();
	long wyn=0;
	boolean np[] = new boolean[n+1];
	for(int i=0;i<=n;i++)np[i]=false;


	int zak=3200;
	if(zak>n)zak=n;

	for(int i=2;i<zak;i++)if(!np[i])
	{

		for(int j=i*2;j<=n;j+=i)if(!np[j])
		{

			np[j]=true;
			wyn+=i;
		}
	}

	for(int i=2;i<=n;i++)if(!np[i])wyn+=i;

	out.printf("%d",wyn);
	out.flush();
}


static byte[] inbuf = new byte[1024];
static int lenbuf = 0, ptrbuf = 0;

static int readByte()
{
	if(lenbuf == -1)throw new InputMismatchException();
	if(ptrbuf >= lenbuf){
		ptrbuf = 0;
		try { lenbuf = is.read(inbuf); } catch (IOException e) { throw new InputMismatchException(); }
		if(lenbuf <= 0)return -1;
	}
	return inbuf[ptrbuf++];
}

static int ni()
{
	int num = 0, b;
	while((b = readByte()) != -1 && !(b >= '0' && b <= '9'));

	while(true){
		if(b >= '0' && b <= '9'){
			num = num * 10 + (b - '0');
		}else{
			return num;
		}
		b = readByte();
	}
}

}

 

mam takie pytanie co zrobić żeby wyniku np dla 7 wynik był 0

 

???

 

proszę o pomoc co mam przerobić?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

przejrzałem tak na szybko nie bardzo wiem o co chodzi. Twoim zadaniem jest znalezienie najmniejszego wspólnego dzielnika > 1. To przecież podstawowy problem matematyczny, klepnij w google ale po ang. masz nie tylko sam algorytm ale i kod....

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość robertko

Chciałbym się dowiedzieć w którym miejscu się zmienia kod żeby wynik dla 7 był 0 ???

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość robertko

Poprawiłem

 

Pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zlitowałem się...

 

Dlaczego tak prosty program jest tak skomplikowanie napisany? Przede wszystkim czy w javie trzeba tak kombinować z czytaniem wejścia?

Więcej zabawy z obsługą wejścia w tym programie niż faktycznym rozwiązaniem zadania, które też jest dziwnie napisane i według mnie nie działa poprawnie (nie wgłębiałem się ale jak na sprawdzanie dzielników bez dzielenia, to coś jest nie tak).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ten odczyt bajt po bajcie to pewnie to samo co w większości pożal-się-boże zawodów algorytmicznych - poza samym algorytmem masz także zawrzeć i/o (piszesz kompletny program), co w ostateczności kończy się na konkursie kto ma najszybsze i/o, zamiast lepszego algorytmu :lol2:

 

Sorry ale nie uwierzę że ktoś w ciągu trzech dni przechodzi ze stanu "nie umiem napisać fora w drugą stronę" do tego co jest w pierwszym poście. Kopiuj wklej i "zróbcie za mnie".

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość robertko

Dziękuje za pomoc,proszę o zamknięcie tematu...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...