Mendo Judge Discussion Board - Forums
Search
Recent Topics
Hottest Topics
Member Listing
Back to home page
Zadaca kompjuteri
Forum Index
»
Задачи од национални натпревари
Author
Message
05/03/2018 17:47:25
Subject:
Zadaca kompjuteri
BATIR
Joined: 20/06/2015 16:36:50
Messages: 155
Offline
Zdravo ja resavav zadaca komputeri, ama ne pominuva, moze mala pomos?
Eve kod:
#include <iostream> using namespace std; int main() { int a,b; cin>>a>>b; int c=a,d=b; int operations=0; while(b/2>a) { if(b%2!=0) { b-=1; operations++; } else { b/=2; operations++; } } while(b-2>a) { b-=2; operations++; } operations+=b-a; if(d-c==1) { cout<<operations<<endl; return 0; } int sec=(d-c)/2; cout<<min(sec,operations)<<endl; return 0; }
06/03/2018 09:35:39
Subject:
Re:Zadaca kompjuteri
Perez
Joined: 18/10/2014 18:53:59
Messages: 93
Offline
Осечам да задачава се решава со динамичко програмирање
06/03/2018 17:50:00
Subject:
Zadaca kompjuteri
MOI
Joined: 07/07/2010 16:31:48
Messages: 447
Offline
BATIR wrote:
Zdravo ja resavav zadaca komputeri, ama ne pominuva, moze mala pomos?
На сличен начин, ама можеш поефикасно да испиташ повеќе опции со рекурзија. Нешто вака.
#include <iostream> #include <algorithm> using namespace std; long long solve(long long S, long long N) { long long best = (N - S) / 2; //(+2, +2, +2, ...) if (S%2 != N%2) best += 1; //treba i (+1) if (N/2 >= S && N%2 == 0) { int other = solve(S, N / 2); if (other + 1 < best) best = other + 1; } if (N/2 >= S && N%2 == 1) { int other = solve(S, N - 1); if (other + 1 < best) best = other + 1; } return best; } int main() { long long S, N; cin >> S >> N; cout << solve(S, N); return 0; }
Forum Index
»
Задачи од национални натпревари
Go to:
Select a forum
Добродојдовте!
Општа дискусија
Задачи од национални натпревари
Задачи од меѓународни натпревари
Други задачи
Регионални натпревари
Државни натпревари
Македонски Олимпијади
Други натпревари
Pascal
C/C++
Јава
Други јазици
Powered by
JForum 2.1.8
©
JForum Team