INOI Contest -- خودمون هم می تونیم contest بسازیم

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#22
Olympiad گفت
Goharshady گفت
آره ACCEPT شد !!!....

PALIN كه BIG NUM و... كه نميخواد !!؟؟؟؟!!!!!!!!!
یه چیزی شبیه bignum می خواد ولی عینا bignum نیست.
منظورم از پست قبلی این بود که چرا getch داره؟؟ تو codechef برای getch کامپایل ارور می ده به همین دلیل گفتم اونجا بزن که ظاهرا شما بدون getch زدی!!
ضمنا سوال bignum را هم حل کنید!!
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#23
ظاهرا تستهای codechef خیلی بهتر انتخاب شده اند!!
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#24
Olympiad گفت
براي چي سوالا اينقدر طولاني ان !!؟؟؟!!! اين Arithmetic چيه !!!!؟؟؟؟؟‌ Big num هست !!؟؟؟؟؟
برای این که توضیحاتشون کامله
یک سوال جایگشت هم اضافه شد.
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
#25
من اون يكي فاكتوريل اولي رو تو codechef ، تايم شدم !!!


ضمنا من BIG NUM بلد نيستم .... به اندازه ي كافي اعصابم رو قبلا داغون كرده..... !!!!! string قاطي داره !!!!............
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#26
Olympiad گفت
من اون يكي فاكتوريل اولي رو تو codechef ، تايم شدم !!!


ضمنا من BIG NUM بلد نيستم .... به اندازه ي كافي اعصابم رو قبلا داغون كرده..... !!!!! string قاطي داره !!!!............
باید یک کمی بهینه سازی کنی!
ضمنا string خیلی هم درست کار می کنه . شما هم باید اینقدر bignum بنویسی تا یاد بگیری
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
#27
كد نهايي كه accept شد :

کد
#include <iostream>
#include <conio.h>
using namespace std;	 
  int ba(int a[],int k,int len)
    {
	   for(int i=0;i<len;i++)
	    a[i]*=k;
	   for(int u=len-1;u>0;u--)
	    if(a[u]>=10)
		{
		  int num=a[u]/10;
		  a[u]%=10;
		  a[u-1]+=num;
		}
    } 
  int te(int k)
   {
	int count=0;
	while(k>0)
	  {
	    count++;
	    k/=10;
	  }
	return count;
   }
  int main()
    {
	 const int m=1000;
	 int t;
	 cin>>t;
	 for(int i=1;i<=t;i++)
	   {
		cout<<endl;
		int x,count=0;
		cin>>x;
		int a[m],r=te(x)-1,p;
		for(int w=0;w<m-1;w++)
		 a[w]=0;
		a[m-1]=1;
		for(int j=1;j<=x;j++)
		 ba(a,j,m);
		 for(int j=0;j<=m;j++)
		  if(a[j]!=0)
		   {
			p=j;
			break;
		   }
		for(int d=p;d<m;d++)
		  cout<<a[d];
	   }
	 getch();
	 return 0;
    }
 

Olympiad

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

1 - operator چيست ؟؟؟!!!!!!!!!!!!!!!!!!

2 - چرا ده بر يك ها رو ميديد به عدد جلويي .؟!!!!!!!!!!!!!!!!!!؟؟!؟! .... من كه نمي فهمم
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#30
ده بر یک ها رو می دم به رقم جلویی چون ارقام را به ترتیب عکس گرفته ام!! علتش اینه که اینطوری می تونم با یک push_back ساده یک رقم اضافه کنم.
operator یعنی عملگر. فکر می کنم همین توضیح کافی باشه!!
اگر خط های آخر را ببینید نوشته ام ans*=i و این جا از عملگر *= که قبلا تعریف کرده بودم استفاده کردم.
 
بالا