Masakracja Faktami i Logiką – Omówienie zadania – Szybkie potęgowanie

Szczegółowe omówienie zadania Masakracja Faktami i Logiką:

Link do powyższego omówienia zadania Masakracja Faktami i Logiką: https://youtu.be/djKP7RKPRC0?t=2476
Omówienie kodu zadania Masakracja Faktami i Logiką: https://youtu.be/djKP7RKPRC0?t=5394
Link do treści zadania Masakracja Faktami i Logiką i możliwości umieszczania rozwiązań: https://szkopul.edu.pl/problemset/problem/mfl/site


Zadanie Masakracja Faktami i Logiką pokazuje szybkie potęgowanie: https://youtu.be/djKP7RKPRC0?t=3804


Jak się uczyć na podstawie tego zadania? https://youtu.be/QgLyXYmFQeU?t=2019
Pamiętaj by zajrzeć max 1 raz – wtedy się rozwijasz: https://youtu.be/pkLXuuOe_qA?t=3625

Lista zadań z rozwiązaniami: https://oki.org.pl/lista-zadan-materialy.php
Samouczek – przygotowanie do Olimpiad: https://oki.org.pl/tutorial/

Zajęcia: https://oki.org.pl/harmonogram-zajec/
Informacje o zajęciach: https://oki.org.pl/newsletter.php

Warto startować w Olimpiadzie Informatycznej!
https://youtu.be/K7fZfJ8nN6A?t=109


Kod C++ programu "Masakracja Faktami i Logiką", który jest omówiony w powyższym filmie i który otrzymuje 100%


#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

const int N = 505;
const ll M = 1000LL*1000LL*1000LL+7;

ll WybranaLiczba[N];
int LiczbaPunktow[N];

ll SzybPot(ll a, ll b){
	if(b==0) return 1LL;
	ll res = SzybPot(a, b/2LL);
	res = (res*res)%M;
	if( b%2==0 ) return res;
	else return (res*a)%M;
}

int main (){
	int n;
	ll pierwszy_zawodnik_wygrywa, drugi_zawodnik_wygrywa; 
	cin>>n;
	for(int i=1; i<=n; i++){
		cin>>WybranaLiczba[i];
	}
	for(int i=1; i<=n; i++){
		for(int j=i+1; j<=n; j++){
			pierwszy_zawodnik_wygrywa = SzybPot(WybranaLiczba[j], WybranaLiczba[i]);
			drugi_zawodnik_wygrywa = SzybPot(WybranaLiczba[i], WybranaLiczba[j]);
			if( pierwszy_zawodnik_wygrywa > drugi_zawodnik_wygrywa ) LiczbaPunktow[i]+=2;
			else if( pierwszy_zawodnik_wygrywa < drugi_zawodnik_wygrywa ) LiczbaPunktow[j]+=2;
			else{
				LiczbaPunktow[i]++;
				LiczbaPunktow[j]++;
			}
		}
	}
	pair<int, int> wynik = {-1, 0};
	for(int i=1; i<=n; i++){
		if( LiczbaPunktow[i] > wynik.first ) wynik = {LiczbaPunktow[i], i};
	}
	cout << wynik.second << "\n";
	return 0;
}
Kod C++ programu "Masakracja Faktami i Logiką", który jest omówiony w powyższym filmie i który otrzymuje 100%

 

Nie dodano jeszcze komentarza, rozpocznij dyskusję pierwszy.

Dodaj komentarz