Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
#61
rezashiri گفت
Goharshady گفت
[center:52cb14320a]=>M<=[/center:52cb14320a]
این سوال:
http://www.codeforces.com/contest/9/problem/C
ترجمه:
یک n به شما داده می شود. شما باید تعداد اعداد بین ۱ تا n که ارقام آنها فقط ۰ و ۱ است را به دست بیاورید

زمان: ۱ ثانیه
مموری: ۶۴ مگابایت
ورودی و خروجی استاندارد
n بین ۱ تا ۱۰ به توان ۹ است

مثال:
ورودی :
۱۰
خروجی:
۲
توضیح : پاسخها ۱ و ۱۰ هستند.

پی نوشت: آقای بیباک شما کجا هستید؟ اون سوال B رو چیکار کنیم؟ بر اساس ترجمه ی شما حل کنیم؟
برای این که تایم نشه کدشو اینجوری زدم ولی فکر نکنم اگه عادی هم کد می زدم مشکلی پیش می اومد؟!؟

http://snipt.net/rezashiri/contest-9-c

[center:52cb14320a]


[/center:52cb14320a]چه كد عجيبي نوشتي !!!!!‌چه حوصله اي داريد ها .... !!!!!!


اينم كد من :

کد
#include <iostream>
#include <conio.h>
   using namespace std;
    int po( int x, int y)
	 {
	   int ans=1;
	    for( int i=1;i<=y;i++)
		ans*=x;
	    return ans;
	 }
   int t(int m) 
	 {
	   int t=0;
	   while(m>0)
		{
		  t++;
		  m/=10;
		}
	    return t;
	  }    
   int f( int k)
	{
	   while(k>0)
		{
		  int flag=0;
		  if(k%10==1||k%10==0)
		    flag=1;
		  if(flag==0)
		   return 0;
		  k/=10;
		}
	   return 1;
	}
	int main()
	  {
		int count=0,n,g;
		cin>>n;    
		g=n/po(10,t(n)-1);
		if(g>1)
		    cout<<po(2,t(n))-1;
	    else
		 {	 
		  for(int i=po(10,t(n)-1);i<=n;i++)    
		   if(f(i))
		    count++;
		   cout<<po(2,t(n)-1)+count-1;
		 }
		getch();
		return 0;
	   }
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
#62
Olympiad گفت
rezashiri گفت
Goharshady گفت
[center:1981bb3a6b]=>M<=[/center:1981bb3a6b]
این سوال:
http://www.codeforces.com/contest/9/problem/C
ترجمه:
یک n به شما داده می شود. شما باید تعداد اعداد بین ۱ تا n که ارقام آنها فقط ۰ و ۱ است را به دست بیاورید

زمان: ۱ ثانیه
مموری: ۶۴ مگابایت
ورودی و خروجی استاندارد
n بین ۱ تا ۱۰ به توان ۹ است

مثال:
ورودی :
۱۰
خروجی:
۲
توضیح : پاسخها ۱ و ۱۰ هستند.

پی نوشت: آقای بیباک شما کجا هستید؟ اون سوال B رو چیکار کنیم؟ بر اساس ترجمه ی شما حل کنیم؟
برای این که تایم نشه کدشو اینجوری زدم ولی فکر نکنم اگه عادی هم کد می زدم مشکلی پیش می اومد؟!؟

http://snipt.net/rezashiri/contest-9-c

[center:1981bb3a6b]
[/center:1981bb3a6b]چه كد عجيبي نوشتي !!!!!‌چه حوصله اي داريد ها .... !!!!!!

شما فکر کردین من اون کد رو دستی نوشتم؟!؟


نه بابا ، اینم برنامه ای که با هاش اونارو ساختم(خیلی ایده ی بدرد بخوریه...)


کد
#include <cstdio>
#include <conio.h>
#include <fstream>
#include <iostream>

using namespace std;

bool isok(int x)
{
	int tedad=0,tedad2=0;
	
    while(x>0)
    {
		    tedad++;
		    if(x%10==0 || x%10==1) 
		    {tedad2++;
		    x/=10;}
		    else return false;
    }

if(tedad==tedad2) return true;
return false;
}

int main()
{
    ofstream out("out2.txt");
    
    for(unsigned long long i=1;i<=1000000000;i++)
    {
		  if(isok(i)) out<<"if("<<i<<"<=n) tedad++;"<<endl;
    }
    
    //getch();
    return 0;
}
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#64
rezashiri گفت
Goharshady گفت
[center:520e9bad87]=>M<=[/center:520e9bad87]
این سوال:
http://www.codeforces.com/contest/9/problem/C
ترجمه:
یک n به شما داده می شود. شما باید تعداد اعداد بین ۱ تا n که ارقام آنها فقط ۰ و ۱ است را به دست بیاورید

زمان: ۱ ثانیه
مموری: ۶۴ مگابایت
ورودی و خروجی استاندارد
n بین ۱ تا ۱۰ به توان ۹ است

مثال:
ورودی :
۱۰
خروجی:
۲
توضیح : پاسخها ۱ و ۱۰ هستند.

پی نوشت: آقای بیباک شما کجا هستید؟ اون سوال B رو چیکار کنیم؟ بر اساس ترجمه ی شما حل کنیم؟
برای این که تایم نشه کدشو اینجوری زدم ولی فکر نکنم اگه عادی هم کد می زدم مشکلی پیش می اومد؟!؟

http://snipt.net/rezashiri/contest-9-c

Wowww!!!
واقعا این همه رو نوشتین؟؟ یا generate کردین؟
این کد منه:
http://gist.github.com/572319
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#65
rezashiri گفت
Olympiad گفت
rezashiri گفت
Goharshady گفت
[center:7c626fda5a]=>M<=[/center:7c626fda5a]
این سوال:
http://www.codeforces.com/contest/9/problem/C
ترجمه:
یک n به شما داده می شود. شما باید تعداد اعداد بین ۱ تا n که ارقام آنها فقط ۰ و ۱ است را به دست بیاورید

زمان: ۱ ثانیه
مموری: ۶۴ مگابایت
ورودی و خروجی استاندارد
n بین ۱ تا ۱۰ به توان ۹ است

مثال:
ورودی :
۱۰
خروجی:
۲
توضیح : پاسخها ۱ و ۱۰ هستند.

پی نوشت: آقای بیباک شما کجا هستید؟ اون سوال B رو چیکار کنیم؟ بر اساس ترجمه ی شما حل کنیم؟
برای این که تایم نشه کدشو اینجوری زدم ولی فکر نکنم اگه عادی هم کد می زدم مشکلی پیش می اومد؟!؟

http://snipt.net/rezashiri/contest-9-c

[center:7c626fda5a]
[/center:7c626fda5a]چه كد عجيبي نوشتي !!!!!‌چه حوصله اي داريد ها .... !!!!!!

شما فکر کردین من اون کد رو دستی نوشتم؟!؟


نه بابا ، اینم برنامه ای که با هاش اونارو ساختم(خیلی ایده ی بدرد بخوریه...)


کد
#include <cstdio>
#include <conio.h>
#include <fstream>
#include <iostream>

using namespace std;

bool isok(int x)
{
	int tedad=0,tedad2=0;
	
    while(x>0)
    {
		    tedad++;
		    if(x%10==0 || x%10==1) 
		    {tedad2++;
		    x/=10;}
		    else return false;
    }

if(tedad==tedad2) return true;
return false;
}

int main()
{
    ofstream out("out2.txt");
    
    for(unsigned long long i=1;i<=1000000000;i++)
    {
		  if(isok(i)) out<<"if("<<i<<"<=n) tedad++;"<<endl;
    }
    
    //getch();
    return 0;
}


این ایده به درد codeforces و sgu می خوره اما تو codechef و تو المپیاد محدودیت حجم کد هم دارید. یعنی حجم فایل cpp تون نمی تونه این همه باشه
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
#66
quote="Goharshady"]"]

این ایده به درد codeforces و sgu می خوره اما تو codechef و تو المپیاد محدودیت حجم کد هم دارید. یعنی حجم فایل cpp تون نمی تونه این همه باشه
[/quote]

منم چون دیدم نداره این کارو کردم ......

راستی معمولا حداکثر حجم کد چنده؟!؟
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#67
تو codechef همه رو زده ۵۰ کیلوبایت اما تو المپیاد حواسشون هست. طوری می دن که نتونی generate کنی. ــ البته باز هم راههایی داره که وقتی امتحانهای خودمون تموم شد می گم ـــ
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#68
[center:3d200da93c]N[/center:3d200da93c]
این سوال مشکل داشت. ورودی طوری بود که طریقه ی خوندن اون می تونست جواب رو تغییر بده یعنی فرق داشت cin استفاده کنید یا scanf.
به همین دلیل تو rating ها هم این سوال رو محاسبه نکردند.
پیشنهاد می کنم ازش بگذریم.
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
#69
پس خودتون یه سوال بذارید....
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#70
آقای بیباک که نیستند. برای سوال B چیکار کنیم؟
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
#71
با اجازه آقای بیباک اون سوال باشه تا خودشون بیان....


شما یه سوال دیگه بذارید!
 

Goharshady1

New Member
ارسال ها
37
لایک ها
0
امتیاز
0
#72
[FONT=tahoma,Arial,sans-serif,Tahoma][center:b476cb6bfe]
O[/center:b476cb6bfe]
این سوال رو تا این لحظه فقط خودم و داداشم حل کرده ایم:
http://www.codechef.com/problems/TECH14

تعداد جایگشتهایی از n عنصر را بیابید که به ازای هر i و j عدد ماکزیمم در بازه ی [i,j] ــ بازه بسته است ــ یا در جای i ام باشد یا در جای j ام.
ورودی:
ابتدا تعداد تستها می آید: t
در هر یک از t خط بعد یک عدد n می آید
خروجی:
برای هر n تعداد خواسته شده را بنویسید. چون اعداد ممکن است خیلی بزرگ شوند باقی مانده ی آنها بر [FONT=Arial,sans-serif]را بنویسید.

[font=Arial,sans-serif]موفق باشید[/font]
[font=Arial,sans-serif]و نکته: فعلا سوال B خوابیده من هم جواب این سوال رو تا وقتی کس دیگه ای حل نکنه نمی ذارم پس یا حلش کنید یا ماراتن CPP کلا می خوابه
[/font]
[font=Arial,sans-serif]
[/font]
[font=Arial,sans-serif]راستی این هم مثال:[/font]
[font=Arial,sans-serif]ورودی:[/font]
[font=Arial,sans-serif]۱[/font]
[font=Arial,sans-serif]۲[/font]
[font=Arial,sans-serif]خروجی:[/font]
[font=Arial,sans-serif]۲[/font]
[/FONT]
[/FONT]
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#73
[center:24857bc624]O[/center:24857bc624]در سوال قبل باید باقیمانده بر ۱۰۰۰۰۰۰۰۰۷ را پیدا کنید. پیشنهاد می کنم از صورت اصلی سوال copy-paste کنید
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#74
[center:9b53af0374]O[/center:9b53af0374]راهنمایی: ترکیبیاتی حلش کنید برای کدش من کمک می کنم. رابطه ی بازگشتی به دست بیارین
 

EhsanKG

New Member
ارسال ها
2
لایک ها
0
امتیاز
0
#75
Goharshady1 گفت
[FONT=tahoma,Arial,sans-serif,Tahoma][center:768b25337b]
O[/center:768b25337b]
این سوال رو تا این لحظه فقط خودم و داداشم حل کرده ایم:
http://www.codechef.com/problems/TECH14

تعداد جایگشتهایی از n عنصر را بیابید که به ازای هر i و j عدد ماکزیمم در بازه ی [i,j] ــ بازه بسته است ــ یا در جای i ام باشد یا در جای j ام.
ورودی:
ابتدا تعداد تستها می آید: t
در هر یک از t خط بعد یک عدد n می آید
خروجی:
برای هر n تعداد خواسته شده را بنویسید. چون اعداد ممکن است خیلی بزرگ شوند باقی مانده ی آنها بر [FONT=Arial,sans-serif]را بنویسید.

[font=Arial,sans-serif]موفق باشید[/font]
[font=Arial,sans-serif]و نکته: فعلا سوال B خوابیده من هم جواب این سوال رو تا وقتی کس دیگه ای حل نکنه نمی ذارم پس یا حلش کنید یا ماراتن CPP کلا می خوابه
[/font]
[font=Arial,sans-serif]
[/font]
[font=Arial,sans-serif]راستی این هم مثال:[/font]
[font=Arial,sans-serif]ورودی:[/font]
[font=Arial,sans-serif]۱[/font]
[font=Arial,sans-serif]۲[/font]
[font=Arial,sans-serif]خروجی:[/font]
[font=Arial,sans-serif]۲[/font]
[/FONT]
[/FONT]
من نمی ذارم بخوابه. راهنمایی : اگر جواب مساله برای x را با a(x) نشان بدهیم داریم:
a(x)=2a(x-1) +0
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#76
بهتر نبود کدش رو بذاری؟
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
#77
ميشه اين سوالو واضح تر توضيح بدي ؟!؟! من از صورت سوال چيزي نفهميدم !!!!!؟؟!
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#78
[center:932036839f]O[/center:932036839f][center:932036839f]
Olympiad گفت
ميشه اين سوالو واضح تر توضيح بدي ؟!؟! من از صورت سوال چيزي نفهميدم !!!!!؟؟!
[/center:932036839f]تعداد جایگشتهای اعداد ۱ تا n را می خواهیم طوری که به ازای هر دو اندیس i و j ماکزیمم عناصری که بین اندیس i ام تا j ام قرار دارند یا در جای i ام باشد یا در جای j ام.
من توضیح بهتری به ذهنم نمی رسه
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
#79
Goharshady گفت
[center:3eb0bc32ec]O[/center:3eb0bc32ec][center:3eb0bc32ec]
Olympiad گفت
ميشه اين سوالو واضح تر توضيح بدي ؟!؟! من از صورت سوال چيزي نفهميدم !!!!!؟؟!
[/center:3eb0bc32ec]تعداد جایگشتهای اعداد ۱ تا n را می خواهیم طوری که به ازای هر دو اندیس i و j ماکزیمم عناصری که بین اندیس i ام تا j ام قرار دارند یا در جای i ام باشد یا در جای j ام.
من توضیح بهتری به ذهنم نمی رسه
يعني دو عدد بزرگ تو اون بازه !؟؟!!؟ يا فقط عدد بزرگ تو يكي از i و j باشه !؟
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#80
Olympiad گفت
Goharshady گفت
[center:630233a5b5]O[/center:630233a5b5][center:630233a5b5]
Olympiad گفت
ميشه اين سوالو واضح تر توضيح بدي ؟!؟! من از صورت سوال چيزي نفهميدم !!!!!؟؟!
[/center:630233a5b5]تعداد جایگشتهای اعداد ۱ تا n را می خواهیم طوری که به ازای هر دو اندیس i و j ماکزیمم عناصری که بین اندیس i ام تا j ام قرار دارند یا در جای i ام باشد یا در جای j ام.
من توضیح بهتری به ذهنم نمی رسه
يعني دو عدد بزرگ تو اون بازه !؟؟!!؟ يا فقط عدد بزرگ تو يكي از i و j باشه !؟
فرض کن اعدادمون اینها باشن:
۹۹ ۸۰۰ ۲۱ ۴۳۲ ۴۲۳ ۸۳ ۱
و اندیسها هم اینطوری باشند:
۱ ۲ ۳ ۴ ۵ ۶ ۷
در این صورت ماکزیمم عددی که بین اندیس ۳ تا ۶ قرار گرفته می شه ماکزیمم این اعداد ۲۱ ۴۳۲ ۴۲۳ ۸۳ که می شه ۴۳۲ و در جای چهارم قرار گرفته پس این جایگشت خوب نیست.
 
بالا