rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
چی شد ، درسته؟!؟
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
نمی دونم! اگه می شه کدی رو بذارین که با اون به این نتایج رسیده اید
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
Goharshady گفت
نمی دونم! اگه می شه کدی رو بذارین که با اون به این نتایج رسیده اید
همچین کد جالبی نیست.خیلی ساده نوشتمش(نمی دونم درسته یا نه!)

البته برای 1000000 یکم طول می کشه(حدودا 10 دقیقه)

کد
#include <stdio.h>
#include <conio.h>

int E(int b)
{
    int a,sum=0;
    for (a=1;a<(b-1);a++)
    
    if(b%a==0)
			sum+=a; 
			return sum;
			
}

//----
float nesbat (float x)
{
    float a=E(x)/x;
    return a;

}
//---------------
int main()
{

    float max=0,max2=10,x;
    int k=0,maxi;
    
	   scanf("%f",&x);
  start:
	 for(float i=0;i<x;i+=10)
    {
		    if(nesbat(i)>max && nesbat(i)<max2) {max=nesbat(i); maxi=i;}
  
    }  

printf("%d\n",maxi);



    getch();
    return 0;
}
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
سوال بعدی:

سوال دوم آزمون اصلی 1 دوره.(صف بی حوصله)
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
rezashiri گفت
سوال بعدی:

سوال دوم آزمون اصلی 1 دوره.(صف بی حوصله)
قسمت اول این سوال greedy بود و قسمت دومش هم dynamic جواب می داد.
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
Goharshady گفت
rezashiri گفت
سوال بعدی:

سوال دوم آزمون اصلی 1 دوره.(صف بی حوصله)
قسمت اول این سوال greedy بود و قسمت دومش هم dynamic جواب می داد.
پس احتمالا کدی که من نوشتم کاملا اشتباهه چون هیچکدوم ار اینارو استفاده نکردم.
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
rezashiri گفت
Goharshady گفت
rezashiri گفت
سوال بعدی:

سوال دوم آزمون اصلی 1 دوره.(صف بی حوصله)
قسمت اول این سوال greedy بود و قسمت دومش هم dynamic جواب می داد.
پس احتمالا کدی که من نوشتم کاملا اشتباهه چون هیچکدوم ار اینارو استفاده نکردم.

دلیلی نداره که اشتباه باشه چون یک سوال می تونه جوابهای متنوعی داشته باشه
ولی فکر نمی کنم برای قسمت اول راهی آسانتر از sort وجود داشته باشه. حالا چرا صورت سوالو نمیذارین؟
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
Goharshady گفت
rezashiri گفت
Goharshady گفت
rezashiri گفت
سوال بعدی:

سوال دوم آزمون اصلی 1 دوره.(صف بی حوصله)
قسمت اول این سوال greedy بود و قسمت دومش هم dynamic جواب می داد.
پس احتمالا کدی که من نوشتم کاملا اشتباهه چون هیچکدوم ار اینارو استفاده نکردم.

دلیلی نداره که اشتباه باشه چون یک سوال می تونه جوابهای متنوعی داشته باشه
ولی فکر نمی کنم برای قسمت اول راهی آسانتر از sort وجود داشته باشه. حالا چرا صورت سوالو نمیذارین؟
پس احتمالا من بد سوال رو فهمیدم!؟!؟

کدمم اینه:

کد
#include <stdio.h>
#include <conio.h>

int main()
{
    int n,nafar[1000],nafarj,min=1000000,minj=0,tedad1=0,max=0,maxj=10000000,tedad2=0,nafar2[100000];
    nafar[0]=-1;
    nafar2[0]=-1;
    scanf("%d",&n);
    
    for(int i=1;i<=n;i++)
    {
		  scanf("%d",&nafar[i]);
		  nafar2[i]=nafar[i];
    }
    //-----------------------------
    start:
		    for(int j=1;j<=n;j++)
    {
		  if(nafar[j]<min && nafar[j]>=minj ) {min=nafar[j]; nafarj=j;}
    }
    
    tedad1++;
    printf("%d",nafarj);
    nafar[nafarj]=min-1;
    minj=min;
    min=1000001;
    if(tedad1<n){
    goto start;}
    printf("\n");
    //-----------------------------
    start2:
    for(int j=1;j<=n;j++)
    {
		  if(nafar2[j]>max && nafar2[j]<=maxj ) {max=nafar2[j]; nafarj=j;}
    }
    
    tedad2++;
    printf("%d",nafarj);
    nafar2[nafarj]=max+1;
    maxj=max;
    max=0;
    if(tedad2<n){
    goto start2;}
    
    getch();
    return 0;
}
اگه درست نیست خودتون صورت سوال رو بنویسید.
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
ببخشید ولی من واقعا کدتونو نمی فهمم.
مخصوصا که C می نویسید. لطفا یه کامنتی چیزی بذارین یا این که الگوریتمتون رو بگین.
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
لطفا اول شما صورت سوالو یه بار دیگه بنویسید . شاید من بد فهمیده باشم سوالو...
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
اين الگوريتم من درسته ؟؟؟!؟!!؟

1 - اول به ترتيب صعودي زمان صبر ها رو مرتب مي كنيم

2- بعدش بايد انديس صبر ها رو به ترتيب بنويسيم ...

براي قسمت دوم هم همينه اما بايد نزولي مرتب كنيم !!
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
Olympiad گفت
اين الگوريتم من درسته ؟؟؟!؟!!؟

1 - اول به ترتيب صعودي زمان صبر ها رو مرتب مي كنيم

2- بعدش بايد انديس صبر ها رو به ترتيب بنويسيم ...

براي قسمت دوم هم همينه اما بايد نزولي مرتب كنيم !!
منم همین کارو کردم.
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
قسمت اولش درسته ولی قسمت دوم درست نیست.
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
اصلا يه سوال !!!!

اگه يه نفر به اول صف برسه در حالي كه صبرش تمام شده باشه كارش رو انجام ميده ؟؟؟؟


اين مثال نقض درسته ! ؟؟؟؟؟؟ ؟؟؟آخه اگه نفر سوم جاي نفر دوم بره اشتباه ميشه!!! ( چون نفر دوم بعد از نفر اول صبرش تموم ميشه و...)



اگر صبر 3 نفر به ترتيب 1و1و0 باشد ، طبق الگوريتمي كه ما گفتيم ميشه :

0 1 1 ===> بنابراين 2 نفر به اول صف ميرسند.

اما

1 0 1 ===> با اين ترتيب1 نفر به اول صف ميرسد .
 
بالا