Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

RGB7795 - Чихэр хийх

Карл интернэтээр тоглоом тоглох дуртай. Одоогоор түүний тоглох дуртай тоглоом нь CandyMaker, чихэр хийдэг тоглоом.

Карл одоогийн байдлаар m машин, w ажилчидтайгаар n чихэр үйлдвэрлэх үе дээр тоглож байгаа.

Нэг удаагийн үйлдвэрлэлээр m * w чихэр үйлдвэрлэж чадах бөгөөд үйлдвэрлэл болгоны дараа зарим чихрээ зараад

шинэ машин авах эсвэл шинэ ажилчин ажиллуулах сонголт түүнд бий.

Машин эсвэл ажилчин нэмж авах зардал нь p бөгөөд хэдийг ч нэмж авч болно.

Карл n чихэр гаргаж авах үйлдвэрлэлийн тоогоо хамгийн бага байлгахыг хүсч байв.

Хамгийн багадаа хэдэн удаа чихэр үйлдвэрлэх вэ?

Жишээ нь

 Карл m =1 машин, w = 2 ажилчинтайгаар 60 чихэр үйлдвэрлэх ажлаа эхлүүлэв.

Машин нэмж авах эсвэл ажилчин нэмж авах зардал нь p = 1. Тэр дараах төлөвлөгөөг хэрэгжүүлэв.

 1. m * w = 1 * 2 = 2 чихэр. 2 машин худалдаж авна.

 2. 3 * 2 = 6 чихэр. 3 машин,3 ажилчин нэмж авна.

3. 6 * 5 = 30 чихэр. Бүгдий нь хадгалах

4. 6 * 5 = 30 чихэр. Өмнөх 30 тай нийлээд Карл 60 чихэртэй.

Нийт 4 үйлдвэрлэлээр зорилгодоо хүрлээ.

Функцын тодорхойлолт

minimumPasses функцыг гүйцээж бич. Хамгийн бага үйлдвэрлэлийн тоог олж буцаа. (long int)

Параметрүүд

  • m: long integer, эхлэх үеийн машины тоо
  • w: long integer, эхлэх үеийн ажилчдын тоо
  • р: long integer, шинэ машин эсвэл ажилчны зардал
  • n: long integer, үйлдвэрлэх ёстой чихэрний тоо

Оролтын формат

Зайгаар тусгаарлагдсан 4 integer тоо байна тус бүр харгалзан m, w, p, n – г илэрхийлнэ.   

Хязгаарлалт

1 <= m, w, p, n <= 10^12

Гаралтын формат

n чихэр үйлдвэрлэхэд шаардагдах хамгийн бага үйлдвэрлэлийн тоог буцаана (long integer)

Жишээ оролт

3 1 2 12

Жишээ гаралт

3

Тайлбар

Карл 3 удаа үйлдвэрлэнэ.

1. Эхний үйлдвэрлэлээр m * w = 3 * 1 = 3 чихэртэй болно. p = 2 чихрээр шинэ ажилчин авна. w = 2, түүнд 1 чихэр үлдэнэ.

2. 3 * 2 = 6 чихэр. 2 * p = 4 чихрээр ахиад нэг машин бас ажилчин нэмж авна. w= 3, m = 4 болно. түүнд одоо 3 чихэр байгаа.

3. 4 * 3 = 12 чихэр. хамгийн багадаа n = 12 чихэртэй болох түүний зорилго биелэлээ. Тиймээс хариу нь 3 байна.

 

Орчуулсан : Б.Баясгалантөгөлдөр


Нэмсэн:Bataa
Огноо:2020-04-13
Хугацааны хязгаарлалт:1s
Эх кодын хэмжээний хязгаарлалт:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Програмчлалын хэлүүд:ADA95 ASM32 ASM64 BASH BF C NCSHARP CSHARP C++ 4.3.2 CPP C99 CLPS LISP sbcl LISP clisp D ERL FORTRAN HASK ICON ICK JAVA JS-RHINO JULIA LUA NEM NICE OCAML PAS-GPC PAS-FPC PERL PHP PIKE PRLG-swi PYTHON PYPY3 PYTHON3 RUBY SCALA SCM guile ST TCL WHITESPACE
Эх сурвалж:https://www.hackerrank.com/challenges/making-candies/problem

hide comments
2024-03-20 03:30:12
#include <iostream>
using namespace std;
void abc(int a)
{
int i;
for(i=0;i<a;i++){
cout << i+1 << "_hello" << endl;
}
}
int main()
{
int a;
cin >> a;
abc(a);
}
2024-03-20 03:16:39
#include <iostream>
using namespace std;
int abc(int kahoot)
{
int a,i,k,n;
k=0;
for(i=1;i<kahoot;i++){
if(kahoot%i==0){
k=k+i;
}
}
if(k==kahoot){
std::cout<<"Төгс тоо"<<endl;
}
}
int def(int doko)
{
int a,b,d,f,i,m,j,n;
a=doko;
n = a;
m = a;
b = 0;
while(a>0) {
a = (a/10);
b = b+1;
}
int c[b];

for (i=0;i<=b-1;i++){
c[i] = m % 10;
m = (m/10);
}
f = 0;
for (i=0;i<=b-1;i++){
d = 1;
for(j=1;j<=b;j++){
d=d*c[i];
}
f=f+d;
}
if(f==n){
std::cout << "Армстронгийн тоо";
}
}
int main()
{
int a;
std::cin >> a;
abc(a);
def(a);
return 0;
}
2024-03-20 02:52:43
#include <iostream>
int abc(int kahoot)
{
int a;
if(kahoot<0){
a=kahoot*-1;
}else{
a=kahoot;
}
return a;
}
int main()
{
int a,b;
std::cin >> a;
b =abc(a);
std::cout <<b;
return 0;
}
2024-03-20 01:56:48
#include <iostream>

using namespace std;
int main ()
{
int a,b,j,i,z[100];
cin >> a;
for(i=1;i<=a;i++){
cin >> z[i];
}
for(i=1; i<=a/2+1; i++){
j=a-i+1;
swap(z[i],z[j]);
}
if(a%2!=1){
i=a/2;
j=a/2+1;
swap(z[i],z[j]);
}
for(i=1; i<=a; i++){
cout << z[i] << " ";
}
}
2023-03-26 15:13:36
#include <iostream>
#include <cmath>

using namespace std;

int main() {
long m, w, p, n;
cin >> m >> w >> p >> n;
long balance = 0;

int phases = 0;

while(balance < n) {
phases++;
long income = m * w;
if(balance + income >= n)
break;

long gap = abs(m - w);

long remainder = income % p;
long workerPlusMachine = income / p;

long loIncrementor = (workerPlusMachine - gap) / 2;
long hiIncrementor = workerPlusMachine - loIncrementor;

if(m > w) {
w += hiIncrementor;
m += loIncrementor;
}
else {
m += hiIncrementor;
w += loIncrementor;
}

// cout << "machines: " << m << endl;
// cout << "workers: " << w << endl;

balance += remainder;
}

cout << phases;
}

Source code by JacKeR*
2022-05-24 02:52:14
stfu bitch :
2022-04-29 10:17:32
#include <bits/stdc++.h>
using namespace std;

long int miniumPasses(long int m, long int w, long int p, long int n){
long int dav = 0, chiher = 0, nemelt = 0;

while(chiher<n){
dav++;
chiher += m * w;
if(chiher >= n) break;
if(chiher >= p){
nemelt = chiher/p;
chiher -= (chiher/p)*p;
}
if(nemelt%2==0){
m += nemelt/2;
w += nemelt/2;
}else{
if(m > w){
w += nemelt;;
}
else{
m += nemelt;
}
}

nemelt = 0;
}


return dav;
}

int main(){

long int m, w, p, n, j;

cin >> m >> w >> p >> n;

j = miniumPasses(m,w,p,n);

cout << j;
return 0;
}
bi chadsaan
2020-07-07 07:33:36
wtf
2020-07-07 07:33:36
wtf
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.