پاسخ سوال وزیر و تقسیم زمین + کوئرا

پاسخ سوال وزیر و تقسیم زمین + کوئرا
پاسخ سوال وزیر و تقسیم زمین + کوئرا

پاسخ سوال وزیر و تقسیم زمین + کوئرا

در این نوشته تمرین “وزیر و تقسیم زمین” که در وبسایت کوئرا موجود می باشد را برای شما کاربران عزیز حل کرده ایم.

 

 

در مورد سایت کوئرا بیشتر بخوانید…

 

تمرین وزیر و تقسیم زمین کوئرا + سی پلاس پلاس

وزیر شهر شکرستان می‌خواهد از n نفر از اشراف، زمین کشاورزی بخرد و آن را به مردم بفروشد. همه‌ی زمین ها به شکل یک مربع  و کنار هم، در یک ردیف قرار دارند. هر یک از این اشراف برای زمین خودش یک قیمت به وزیر اعلام کرده است. اکنون وزیر می‌خواهد این n زمین را از اشراف خریداری کند و به روش زیر تقسیم کرده و به مردم بدهد.

  1. زمین‌ها را به تعدادی بازه پشت سر هم افراز کند به طوری که مساحت زمین های همه بازه با هم برابر باشند.
  2. مجموع قیمت‌ زمین های همه بازه ها با هم برابر باشند.
  3. تعداد بازه ها بیشینه باشد.

شما با اعلام کردن تعداد قسمت‌ها با شرایط فوق، به وزیر کمک کنید تا زمین‌ها را به مردم بدهد.

 

ورودی سوال وزیر و تقسیم زمین

در خط اول ورودی یک عدد صحیح  که برابر تعداد زمین ها است داده می شود. در خط بعدی n عدد صحیح داده می شود که عدد iام برابر است که همان قیمتی است که اشراف برای زمین ام اعلام کردند.

 

خروجی سوال وزیر و تقسیم زمین

در یک خط خروجی بیشینه تعداد بازه ها را چاپ کنید.

 

حل سوال وزیر و تقسیم زمین (به زبان برنامه نویسی سی پلاس پلاس)

#include<bits/stdc++.h>

#define watch(x) cout<<(#x)<<" is "<<(x)<<"\n"
#define print(x) cout<<x<<"\n"
#define For(i,x,y) for(i = x; i < y; i++)
typedef std::vector<int> vi;
typedef std::vector<std::vector<int>> vvi;
typedef long long ll;
int INF = 999999;
using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    int q,x;
    cin>>q;
    vi vec;
    for(int i = 0; i < q; i++){
        cin>>x;
        vec.push_back (x);
    }
    for(int i = q; i > 0;i--){
        if(q % i == 0){
            int sum = 0;
            for(int j = 0; j < q / i; j++){
                sum += vec[j];
            }
            int j = 0;
            for(; j < i; j++){
                int temp = 0;
                for(int k = (j) * (q / i); k < (j + 1) * (q / i); k++){
                    temp += vec[k];
                }
                if(temp != sum){
                    break;
                }
            }
            if(j == i){
                cout<<i<<endl;
                return 0;
            }
        }
    }
}

 

 

منبع سوال : وبسایت کوئرا

 

اگر روش حل بهتری برای “تمرین وزیر و تقسیم زمین” دارید برای ما ارسال کنید تا با نام خودتان به اشتراک بگذاریم.

اگر سوال خاصی را مدنظر دارید در بخش نظرات برای ما ارسال کنید تا حل آن سوال را در الویت محتوای سایت بگذاریم.

موفق باشید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]