PDA

View Full Version : بررسی حالات



sa1378
یک شنبه 29 تیر 1393, 13:14 عصر
میخوایم یه آرایه n تایی داشته باشیم و بیایم به ازای هر نوع مقدار دهی اعضای آرایه حالاتی رو بررسی کنیم
مثلا یه آرایه 3 تایی داریم که اعضاش میتونن 0و1 باشن
حالاتش اینه:
000
001
010
011
100
110
111
میخوایم به ازای همه اینها مثلا بررسی کنیم تعداد 1 هاشون چندتاست و میانگین تعداد 1 هارو توی اینا حساب کنیم

یه الگوریتم ساده برای نوشتنش لطفا بدید
کدش رو خودم مینویسم

rahnema1
یک شنبه 29 تیر 1393, 15:00 عصر
فکر کنم این جور میشه. به جای علامت ! هم تابع یا عملگر فاکتوریل را تعریف کنید

n=3
s=0;
for (k=1;k<=n;k++)
s+=n!/((k-1)!(n-k)!);
printf("miangin=%f",s/pow(2,n));
printf("tedade 1 ha=%d",n*pow(2,n-1));

sa1378
یک شنبه 29 تیر 1393, 17:53 عصر
فکر کنم این جور میشه. به جای علامت ! هم تابع یا عملگر فاکتوریل را تعریف کنید

n=3
s=0;
for (k=1;k<=n;k++)
s+=n!/((k-1)!(n-k)!);
printf("miangin=%f",s/pow(2,n));
printf("tedade 1 ha=%d",n*pow(2,n-1));


من منظورم تعداد حالات نیست
میخوام توی هر حالت یه کارایی انجام بدم
یه مثال دیگه : میگه از مجموعه اعداد 1 تا 10 چند زیرمجموعه داریم که در آن ها شرط های .... و .... و .... و .... برقرار باشد
حالا ما باید تمام 1024 حالت رو بر اساس اون شرط ها بررسی کنیم

a.r.khoshghalb
یک شنبه 29 تیر 1393, 17:56 عصر
اعضا فقط می تونن 0و1 باشن؟

sa1378
یک شنبه 29 تیر 1393, 18:21 عصر
اعضا فقط می تونن 0و1 باشن؟

برای مثال اولی آره
البته این فقط یه مثاله
اگه برای این حل بشه برای حالت کلی هم میشه

a.r.khoshghalb
یک شنبه 29 تیر 1393, 21:05 عصر
خوب اگر معلوم بود اعضا فقط 0و1 ان یا چیز دیگه میشد الگوریتم ریاضی تری استفاده کرد که خیلی سریع تر باشه ولی خوب حالا مجبوریم تمام حالات رو بسازیم.
حالت خیلی ساده اش الگوریتم بازگشتیه، میایم خونه اول رو یه چیزی میذاریم، بعد بقیه خونه ها رو میچینیم. کدش رو برات زدم و تلاش کردم تا جای ممکن قابل فهم باشه. هرجا رو نفهمیدی بپرس :

#include <iostream>

using namespace std;

#define MAXN 1000
#define MAXT 1000

int aza[MAXT];
int N; // Tedad khune haye araye
int T; // Tedad azay baraye majmooe, Mesal, agar faghat 0,1 ast --> T = 2

void print(int x[])
{
for (int i = 0; i < N; i++)
cout << x[i] << ' ';
cout << endl;
}

void input()
{
cin >> N; //Tedad khune haye araye
cin >> T; //Tedad ozv ha
for (int i = 0; i < T; i++)
cin >> aza[i];
}

void solve(int n, int x[])
{
if (n == 0)
{
// Alan too araye X ye halat hast
//Amaliat
print(x);
return;
}
for (int i = 0; i < T; i++)
{
x[n-1] = aza[i];
solve(n-1, x);
}
}

int main()
{
int a[MAXN]; //Yek araye khali!

input(); //Vorodi haye barname ro migire

solve(N,a); //Hame halat ha ro misaze
}


الان مثلا اگر برای همون آرایه 3 تایی با 0و1 بخوای باید ورودی بدی:
3
2
1
0

خروجی رو واست چاپ می کنه و می فهمی تو پست اولت یه حالت رو جا انداختی :چشمک:

rahnema1
یک شنبه 29 تیر 1393, 21:32 عصر
این جور هم میشه

#include <bitset>
#include <cmath>
#include <vector>
using namespace std;

int main()
{
const int n=3;
vector<bitset<n> > halat (pow(2,n));
for (int i=0; i<halat.size(); i++)
halat[i]=i;
}

a.r.khoshghalb
دوشنبه 30 تیر 1393, 04:19 صبح
این کد فقط برای 0و1 کار می کنه البته.

rahnema1
دوشنبه 30 تیر 1393, 05:29 صبح
این کد فقط برای 0و1 کار می کنه البته.

بستگی داره چه استفاده ای بخواد ازش بشه مثلا اگه بخواهیم از بین اعداد 1 تا 3 انتخاب کنیم می تونیم این کار را انجام بدیم

int adad[]={1,2,3};
for (int i=0; i < halat.size(); i++)
{
for (int j=0; j < n; j++)
if(halat[i][j]) cout<< adad[j]<<" ";
cout<<endl;
}

sa1378
دوشنبه 30 تیر 1393, 10:04 صبح
خوب اگر معلوم بود اعضا فقط 0و1 ان یا چیز دیگه میشد الگوریتم ریاضی تری استفاده کرد که خیلی سریع تر باشه ولی خوب حالا مجبوریم تمام حالات رو بسازیم.
حالت خیلی ساده اش الگوریتم بازگشتیه، میایم خونه اول رو یه چیزی میذاریم، بعد بقیه خونه ها رو میچینیم. کدش رو برات زدم و تلاش کردم تا جای ممکن قابل فهم باشه. هرجا رو نفهمیدی بپرس :

#include <iostream>

using namespace std;

#define MAXN 1000
#define MAXT 1000

int aza[MAXT];
int N; // Tedad khune haye araye
int T; // Tedad azay baraye majmooe, Mesal, agar faghat 0,1 ast --> T = 2

void print(int x[])
{
for (int i = 0; i < N; i++)
cout << x[i] << ' ';
cout << endl;
}

void input()
{
cin >> N; //Tedad khune haye araye
cin >> T; //Tedad ozv ha
for (int i = 0; i < T; i++)
cin >> aza[i];
}

void solve(int n, int x[])
{
if (n == 0)
{
// Alan too araye X ye halat hast
//Amaliat
print(x);
return;
}
for (int i = 0; i < T; i++)
{
x[n-1] = aza[i];
solve(n-1, x);
}
}

int main()
{
int a[MAXN]; //Yek araye khali!

input(); //Vorodi haye barname ro migire

solve(N,a); //Hame halat ha ro misaze
}


الان مثلا اگر برای همون آرایه 3 تایی با 0و1 بخوای باید ورودی بدی:
3
2
1
0

خروجی رو واست چاپ می کنه و می فهمی تو پست اولت یه حالت رو جا انداختی :چشمک:

دستتون درد نکنه
حالا هرکاری که میخوایم انجام بدیم بجای دستور print توی تابع solve میزاریم

sa1378
دوشنبه 30 تیر 1393, 10:44 صبح
من این کد رو برای این سوال:
121348
به این صورت تغییر دادم:
#include <iostream>

using namespace std;

#define MAXN 201
#define MAXT 3

int aza[MAXT];
int N; // Tedad khune haye araye
int T; // Tedad azay baraye majmooe, Mesal, agar faghat 0,1 ast --> T = 2
int Halat=0;
void calculate(int x[])
{
//cout<<"Wait for calculating ..."<<endl;
int a=0;//group a
int b=0;//group b
for (int i = 0; i < N; i++)
{
if(x[i]==0)
a++;

if(x[i]==1)
b++;
//cout << x[i] << ' ';
}
cout<<a<<" "<<b<<endl;
if (a==100)
{
for(int k=0 ; k < N-100 ; k++)//barresi daste haie 100 taie
{
a=0;
b=0;
for(int q=k ; q < k+100 ; q++ )
{
if(x[q]==0)
a++;
}
if(a==50)
{
Halat++;
cout<<"This request found!"<<endl;
}
}




}
cout << endl;
}

void input()
{
N=200; //Tedad khune haye araye
T=2; //Tedad ozv ha
aza[0]=0;
aza[1]=1;
}

void solve(int n, int x[])
{
if (n == 0)
{
// Alan too araye X ye halat hast
//Amaliat
calculate(x);
return;
}
for (int i = 0; i < T; i++)
{
x[n-1] = aza[i];
solve(n-1, x);
}
}

int main()
{
int a[MAXN]; //Yek araye khali!

input(); //Vorodi haye barname ro migire

solve(N,a); //Hame halat ha ro misaze

cout<<"Tedad halat haie yafte shode"<<Halat<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}


ولی اگه بخواد همه ی حالت هارو بررسی کنه و اونایی که دقیقا 100 تا عدد 0 دارن روشون محاسبه کنه خیلی طول میکشه
چجوری همون اول یکاری کنیم همه رشته ها 100 تا عدد 0 و 100 تا عدد 1 داشته باشن؟

rahnema1
دوشنبه 30 تیر 1393, 11:21 صبح
برای اثباتش کافیه شما دو تا آرایه صد تایی داشته باشید اولی همش 1 و دومی همه اش صفر باشه
یک آرایه سوم هم درست کنید شامل 200 عضو
بعد صد تا خونه آرایه سوم را در نظر بگیرید و داخل اون را با 50 تا از اعضای گروه 1 و همچنین 50 تا از گروه 2 پر کنید بعد کاری که می کنید اینه که بقیه خونه های آرایه سوم را با بقیه اعداد پر می کنید. اگه عددی زیاد یا کم اومد پی مساله اثبات نمیشه ولی اگه تمام اعداد داخل آرایه سوم قرار گرفتن مساله اثبات میشه

a.r.khoshghalb
دوشنبه 30 تیر 1393, 12:07 عصر
آخه عزیز کجای سوال گفته کد بزن؟! گفته اثبات کنید!
شما احتمالا داری برای المپیاد می خونی و این کار، کار غلطیه! وقتی سوال می گه اثبات کن شما نباید بری سراغ کد!
یه راه حل اثباتش اینه :
تابع (f(n رو به این صورت تعریف می کنیم : تعداد اعضای شهر a در صف از نفر n اوم صف تا n+99 اوم صف (100 نفر)

(f(1 رو بررسی می کنیم، اگر 50 باشد که مسئله حل شده. پس (f(1 مساوی 50 نیست.
از آنجایی که کلا 100 نفر از شهر a وجود دارند، اگر (f(1 بیشتر از 50 باشد، (f(101 کمتر از 50 است و برعکس.
پس ثابت کردیم که یک (f(i وجود دارد که کمتر از 50 است و یک (f(j هم وجود دارد که بیش تر از 50 است.

می خواهیم نشان دهیم که مقدار تابع (f(n حداکثر می تواند یکی کم یا زیاد شود.
یعنی :

|f(n+1) - f(n)| <= 1


(f(n شامل اعضای صف از شماره n تا 99+n است و (f(n+1 شامل اعضای صف از شماره n+1 تا n+1+99 است. پس اعضا همان ها هستند به جز عضو n اوم که حذف شده و عضو n+100 اوم که اضافه شده.
یا هر دوی این ها از یک شهر هستند که مقدار (f(n+1 تغیری نمی کند یا نیستند. اگر n عضو شهر a باشد و n+100 عضو شهر b، یک a حذف شده و یک b اضافه شده پس (f(n+1 یکی کم می شود یا برعکس، که در اون صورت (f(n+1 یکی زیاد می شود.

تا کنون ثابت کرده ایم که :


|f(n+1) - f(n)| <= 1

و اینکه یک (f(i وجود دارد که کمتر از 50 است و یک (f(j هم وجود دارد که بیش تر از 50 است.

(f(1 یا کمتر از 50 است با بیشتر. پس یکی از این i,j را بدست آوردیم.
فرض کنید کمتر از 50 باشد. حال کوچکترین j ای را در نظر بگیرید که (f(j بیشتر از 50 است. می دانیم که (f(j-2 کوچکتر از 50 است و با توجه به موارد ثابت شده حتما (f(j-1 مساوی 50 است و جواب پیدا شده است! زیرا اگر (f(j-1 هم کوچکتر از 50 باشد، برای اینکه (f(j بیشتر از 50 شود باید مقدارش حداقل 2 تا زیاد شده باشد که ثابت کردیم چنین چیزی ممکن نیست.

حال فرض کنید (f(1 بیشتر از 50 باشد، تمام مراحل بالا را تکرار کن با این تفاوت که کوچکترین j ای را در نظر بگیر که کمتر از 50 باشد...

هر جا رو نفهمیدی بگو.

a.r.khoshghalb
دوشنبه 30 تیر 1393, 12:10 عصر
برای اثباتش کافیه شما دو تا آرایه صد تایی داشته باشید اولی همش 1 و دومی همه اش صفر باشه
یک آرایه سوم هم درست کنید شامل 200 عضو
بعد صد تا خونه آرایه سوم را در نظر بگیرید و داخل اون را با 50 تا از اعضای گروه 1 و همچنین 50 تا از گروه 2 پر کنید بعد کاری که می کنید اینه که بقیه خونه های آرایه سوم را با بقیه اعداد پر می کنید. اگه عددی زیاد یا کم اومد پی مساله اثبات نمیشه ولی اگه تمام اعداد داخل آرایه سوم قرار گرفتن مساله اثبات میشه

صف رو که شما نمی تونی خودت بچینی!
باید به ثابت کنی به ازای هر چینشی در صف، 100 نفر وجود دارند!

sa1378
دوشنبه 30 تیر 1393, 13:33 عصر
اون رو که میدونم باید اثبات کرد
این سوال برای امتحانات برنامه نویسی هست که سایت irprogramming.ir گذاشته
این رو باید با کد اثباتش کرد
بعد کد رو براشون ارسال میکنی و نمره بهش میدن و رتبه بندی داره
البته این آزمون مال خیلی وقت پیشه
من خودم میخوام سوالاش رو حل کنم که راه بیافتم

rahnema1
دوشنبه 30 تیر 1393, 14:06 عصر
صف رو که شما نمی تونی خودت بچینی!
باید به ثابت کنی به ازای هر چینشی در صف، 100 نفر وجود دارند!

چرا نمی تونم خودم بچینم؟ این جور که از سوال فهمیدم باید اثبات بشه « امکان اینکه اگه 100 نفر را که پشت سر هم هستند بکشیم بیرون، 50 تای اونها از گروه 1 باشند»
حالا ما می آییم صد نفر مذکور را در نظر می گیریم و با 50 نفر از گروه یک پر می کنیم. حالا بررسی می کنیم آیا قانونی نقض شده یا اشکالی پیش میاد؟ که نشده
حتی از اون صد نفر صد تا می تونن از گروه 1 باشند. مگه سوال غیر از اینه؟

مسعود اقدسی فام
دوشنبه 30 تیر 1393, 14:17 عصر
اون رو که میدونم باید اثبات کرد
این سوال برای امتحانات برنامه نویسی هست که سایت irprogramming.ir گذاشته
این رو باید با کد اثباتش کرد
بعد کد رو براشون ارسال میکنی و نمره بهش میدن و رتبه بندی داره
البته این آزمون مال خیلی وقت پیشه
من خودم میخوام سوالاش رو حل کنم که راه بیافتم

وقتی نوشته "می‌توان یافت" یعنی باید به ازای هر چیدمانی بتونی یدونه پیدا بکنی. پس اگه می‌خوای با کد اثبات کنی باید همه‌ی چیدمان‌های ممکن رو بچینی و به ازای هر کدوم یدونه زیردنباله با این شرایط پیدا کنی! که خب طبیعتا مقرون به صرف نیست. اثبات ریاضی که دوستمون گفتن کاملا درست و منطقی هست.
اینکه نوشتید بررسی می‌کنن و نمره می‌دن و باید با کد اثبات کرد ..، دقیقا چی رو بررسی می‌کنن؟ که به ازای هر دنباله‌ای که خودشون بدن بتونید براش همچین زیردنباله‌ای رو مشخص کنید؟ یا همین کدی رو می‌خوان که من این بالا توضیح دادم؟

مسعود اقدسی فام
دوشنبه 30 تیر 1393, 14:20 عصر
چرا نمی تونم خودم بچینم؟ این جور که از سوال فهمیدم باید اثبات بشه « امکان اینکه اگه 100 نفر را که پشت سر هم هستند بکشیم بیرون، 50 تای اونها از گروه 1 باشند»
حالا ما می آییم صد نفر مذکور را در نظر می گیریم و با 50 نفر از گروه یک پر می کنیم. حالا بررسی می کنیم آیا قانونی نقض شده یا اشکالی پیش میاد؟ که نشده
حتی از اون صد نفر صد تا می تونن از گروه 1 باشند. مگه سوال غیر از اینه؟

خب اینطوری که خیلی ساده می‌شه. یک در میان از دو گروه می‌چینیم. اینطوری همه‌ی زیردنباله‌های متوالی دقیقا ۵۰ تا از گروه اول و ۵۰ تا از گروه دوم دارن. اصلا کد نمی‌خواد.
مطمئنا نمی‌تونیم خودمون صف رو بچینیم و برای هر صف دلخواهی این سوال مطرح شده.

rahnema1
دوشنبه 30 تیر 1393, 14:27 عصر
خب اینطوری که خیلی ساده می‌شه. یک در میان از دو گروه می‌چینیم. اینطوری همه‌ی زیردنباله‌های متوالی دقیقا ۵۰ تا از گروه اول و ۵۰ تا از گروه دوم دارن. اصلا کد نمی‌خواد.
مطمئنا نمی‌تونیم خودمون صف رو بچینیم و برای هر صف دلخواهی این سوال مطرح شده.

ما که نمیتونیم از نیت و قصد پنهانی طراح سوال باخبر بشیم:) اون چیزی که من در این سوال می بینم همین چیز ساده هست. مگه غیر از اینه؟

a.r.khoshghalb
دوشنبه 30 تیر 1393, 15:10 عصر
ما که نمیتونیم از نیت و قصد پنهانی طراح سوال باخبر بشیم:) اون چیزی که من در این سوال می بینم همین چیز ساده هست. مگه غیر از اینه؟

دوست من سوال خیلی واضحه! طراح سوال هم هیچ نیت پنهانی ای نداره!!

rahnema1
دوشنبه 30 تیر 1393, 15:16 عصر
دوست من سوال خیلی واضحه! طراح سوال هم هیچ نیت پنهانی ای نداره!!

بفرما شما بگید منظور سوال چیه

a.r.khoshghalb
دوشنبه 30 تیر 1393, 15:17 عصر
اون رو که میدونم باید اثبات کرد
این سوال برای امتحانات برنامه نویسی هست که سایت irprogramming.ir گذاشته
این رو باید با کد اثباتش کرد
بعد کد رو براشون ارسال میکنی و نمره بهش میدن و رتبه بندی داره
البته این آزمون مال خیلی وقت پیشه
من خودم میخوام سوالاش رو حل کنم که راه بیافتم

من هم irprogramming کار می کردم مطمئنید که باید کد این سوال رو بزنید؟؟
می تونی لینک سوال رو تو سایت irprogramming بدی؟

a.r.khoshghalb
دوشنبه 30 تیر 1393, 15:19 عصر
بفرما شما بگید منظور سوال چیه

100 نفر از شهر a و 100 نفر از شهر b با ترتیبی که ما ازش خبر نداریم تو یک صف ایستاده اند!
ثابت کنید از تو همین ترتیب می شه 100 نفر پشت سر هم انتخاب کرد که 50 تاشون از شهر a و 50 تاشون از شهر b باشند.
اثباتش هم اونی که بالا نوشتم!

rahnema1
دوشنبه 30 تیر 1393, 15:32 عصر
100 نفر از شهر a و 100 نفر از شهر b با ترتیبی که ما ازش خبر نداریم تو یک صف ایستاده اند!
ثابت کنید از تو همین ترتیب می شه 100 نفر پشت سر هم انتخاب کرد که 50 تاشون از شهر a و 50 تاشون از شهر b باشند.
اثباتش هم اونی که بالا نوشتم!

به عبارت دیگه میشه سوال را به این شکل نوشت از انواع ترتیبهای موجود حداقل یک مورد نشان دهید که در 100 نفر که پشت سرهم قرار دارند، 50 تا از گروه a و 50 تا از گروه b باشند

a.r.khoshghalb
دوشنبه 30 تیر 1393, 15:44 عصر
به عبارت دیگه میشه سوال را به این شکل نوشت از انواع ترتیبهای موجود حداقل یک مورد نشان دهید که در 100 نفر که پشت سرهم قرار دارند، 50 تا از گروه a و 50 تا از گروه b باشند

نه!!
اصلا و به هیچ وجه سوال این منظور رو نمی رسونه بلکه کاملا بر عکس!!
جمله تون رو اصلاح می کنم :
به عبارت دیگه میشه سوال را به این شکل نوشت که در تمام ترتیبهای موجود نشان دهید در همه آنها 100 نفر پشت سرهم وجود دارند، که 50 تا از گروه a و 50 تا از گروه b باشند

rahnema1
دوشنبه 30 تیر 1393, 15:52 عصر
نه!!
اصلا و به هیچ وجه سوال این منظور رو نمی رسونه بلکه کاملا بر عکس!!
جمله تون رو اصلاح می کنم :
به عبارت دیگه میشه سوال را به این شکل نوشت که در تمام ترتیبهای موجود نشان دهید در همه آنها 100 نفر پشت سرهم وجود دارند، که 50 تا از گروه a و 50 تا از گروه b باشند

برای اثبات این حرف شما ( که قبول ندارم ) کافیه از تمام ترتیبهای موجود حداقل یک مورد بیاورید که در 100 نفر که پشت سر هم قرار دارند از گروه a تعدادی غیر از 50 نفر موجود باشد

a.r.khoshghalb
دوشنبه 30 تیر 1393, 16:21 عصر
:متعجب::متعجب::متعجب::متعجب:: تعجب::متعجب::متعجب::متعجب::م عجب::متعجب:
حرف من؟؟؟؟ من صرفا سوال رو برای شما روشن کردم نیازی هم به اثباتش نیست اما برایتان آن یک مورد را میاورم!
صد نفر از شهر a را پشت سر هم فرض کنید و بعد از آنها 100 نفر از شهر b.
در این صورت چیدمان فقط به یک روش می توان 10 نفر انتخاب کرد که 50 تا از آنها از شهر a باشند.

rahnema1
دوشنبه 30 تیر 1393, 16:38 عصر
:متعجب::متعجب::متعجب::متعجب:: تعجب::متعجب::متعجب::متعجب::م عجب::متعجب:
حرف من؟؟؟؟ من صرفا سوال رو برای شما روشن کردم نیازی هم به اثباتش نیست اما برایتان آن یک مورد را میاورم!
صد نفر از شهر a را پشت سر هم فرض کنید و بعد از آنها 100 نفر از شهر b.
در این صورت چیدمان فقط به یک روش می توان 10 نفر انتخاب کرد که 50 تا از آنها از شهر a باشند.

به نظرتون این دو جمله شما متناقض نیست؟
جمله اول:
100 نفر از شهر a و 100 نفر از شهر b با ترتیبی که ما ازش خبر نداریم تو یک صف ایستاده اند!
ثابت کنید از تو همین ترتیب می شه 100 نفر پشت سر هم انتخاب کرد که 50 تاشون از شهر a و 50 تاشون از شهر b باشند.

جمله دوم:
در تمام ترتیبهای موجود نشان دهید در همه آنها 100 نفر پشت سرهم وجود دارند، که 50 تا از گروه a و 50 تا از گروه b باشند

در جمله اول که به نظر من درسته و منظور سوال هم همینه شما اشاره کردید که «می شه»
«می شه» یعنی چی؟ یعنی «حداقل یک مورد»

اما در جمله دوم که به نظر من اشتباهه و منظور سوال این نیست گفتید «در تمام» و «در همه» که با اون متناقضه

و اثبات شما هم در راستای جمله دوم بوده و نه جمله اول (و نه سوال اصلی)

a.r.khoshghalb
دوشنبه 30 تیر 1393, 16:56 عصر
*این نوشته حذف شد!*

rahnema1
دوشنبه 30 تیر 1393, 17:19 عصر
اونی که سوال کرد جوابشو گرفت شما هم نمی دونم چرا انقدر درک موضوع برات سخته...
هر 2 جمله یک معنی رو میدن...
خیلی به خودت فشار نیار... برو یکم استراحت کن... فردا یه نفر رو که قبولش داری بیار بخونه این 2 جمله رو و سوال رو واست توضیح بده...
:گیج:

دوست عزیز من قصد بی احترامی به شما نداشتم. به خاطر اثبات زیبایی هم که کردید به شما و به تواناییهاتون تبریک می گم شاید طراح سوال اون طور که باید و شاید سوال را درست مطرح نکرده و احتمالا منظورش اون جمله دوم شما بوده. در هر صورت ظاهر سوال ( هر چند ساده) با اون متفاوت بود. من هم مبنای قضاوت را ظاهر سوال قرار دادم
در هر صورت به خاطر همه چیز از شما عذر می خوام

a.r.khoshghalb
دوشنبه 30 تیر 1393, 18:06 عصر
ابدا من هم قصد بی احترامی نداشتم ولی الان که دوباره پستم رو خوندم دیدم یکمی لحنم بد بوده و از شما معذرت می خوام.

sa1378
سه شنبه 31 تیر 1393, 07:04 صبح
دوست عزیز
توی تمام اثبات ها باید تمامی حالات بررسی بشن
اگه شما بگین به ازای یه حالت درسته شما برمیگردید به چندصد سال پیش
که دانشمندا نظریه میدادن و به ازای همه حالات اثبات نمیکردن
ممکنه حالت شما تنها یک تناقض باشه

sa1378
سه شنبه 31 تیر 1393, 07:08 صبح
من هم irprogramming کار می کردم مطمئنید که باید کد این سوال رو بزنید؟؟
می تونی لینک سوال رو تو سایت irprogramming بدی؟

نمیدونم دقیقا
من از این لینک همه سوالاشو گرفتم:http://irprogramming.ir/page/%D8%B2%D9%86%DA%AF-%D8%AD%D9%84-%D9%85%D8%B3%D8%A7%D9%84%D9%87
آخه همه سوالاش اثبات هست و سایت هم برای مرحله 3 هست پس احتمالا باید برای همه کد زد

a.r.khoshghalb
سه شنبه 31 تیر 1393, 07:30 صبح
نمیدونم دقیقا
من از این لینک همه سوالاشو گرفتم:http://irprogramming.ir/page/%D8%B2%D9%86%DA%AF-%D8%AD%D9%84-%D9%85%D8%B3%D8%A7%D9%84%D9%87
آخه همه سوالاش اثبات هست و سایت هم برای مرحله 3 هست پس احتمالا باید برای همه کد زد

نه! نباید برای همه کد زد!!! وقتی سوال میگه اثبات کنید باید اثبات کنی و وقتی میگه برنامه ای بنویسید که باید کد بزنی!
قطعا می دونی که قبل از مرحله 3، مرحله 2 هست و سخت تر از مرحله 3 است! در واقع مرحله 3 اصلا سخت نیست! پس توصیه می کنم اگر واقعا می خوای المپیاد چیزی بشی بشین تئوری رو خوب بخون!
هنوز واسه کد زدن خیلیییی زوده!
تئوری بخون که به سر نوشت من دچار نشی!
و در ضمن! تو همین صفحه ای که دادی نوشته:
"این برنامه با هدف ایجاد فضایی برای حل مسائل تئوری و همچنین کمک به نحوه‌ی نوشتن پاسخ یک سوال طراحی گردید."
و این خیلی واضحه که میگه تئوری! نوشتن! راه حل!
نه کد زدن...
موفق باشی.

rahnema1
سه شنبه 31 تیر 1393, 08:53 صبح
دوست عزیز
توی تمام اثبات ها باید تمامی حالات بررسی بشن
اگه شما بگین به ازای یه حالت درسته شما برمیگردید به چندصد سال پیش
که دانشمندا نظریه میدادن و به ازای همه حالات اثبات نمیکردن
ممکنه حالت شما تنها یک تناقض باشه

ای کاش این را به طراح سوال می گفتید. به خدا من بی تقصیرم :)