Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
SABB گفت
Olympiad گفت
كد اون سوال "عدد اول" كه بدون حلقه هاي شرطي بود رو .... بذاريد !!!!
شاید چون اشتباه متوجه شدید نمیتونین حل کنید وگرنه خیلی آسونه. مثلا این تکه هیچ اشکالی نداره:
(++for(i=2; n%i!=0; i​
چون کار یک if رو عمل نمی کنه، ولی این اشکال داره:
(++for(i=2; (n%i!=0) && (i<3); i​
شما گفتيدهر چيزي كه كار if رو ايفا كنه ، نداريم !!!!!!!!!!!!!!!!!!!!
اين جوري كه كاري نداره.............
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
Olympiad گفت
SABB گفت
Olympiad گفت
كد اون سوال "عدد اول" كه بدون حلقه هاي شرطي بود رو .... بذاريد !!!!
شاید چون اشتباه متوجه شدید نمیتونین حل کنید وگرنه خیلی آسونه. مثلا این تکه هیچ اشکالی نداره:
(++for(i=2; n%i!=0; i​
چون کار یک if رو عمل نمی کنه، ولی این اشکال داره:
(++for(i=2; (n%i!=0) && (i<3); i​
شما گفتيدهر چيزي كه كار if رو ايفا كنه ، نداريم !!!!!!!!!!!!!!!!!!!!
اين جوري كه كاري نداره.............
خوب منم که گفتم.
for اولی کار if رو انجام نمی ده. با این حال... میشه کدتونو بذاربد؟ (چون آخرش یه نکته داره.)
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
اينجوري باشه هرجا خواستيم يه for اضافه ميزنيم و فقط يه condition براش ميذاريم !!!!
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
Olympiad گفت
اينجوري باشه هرجا خواستيم يه for اضافه ميزنيم و فقط يه condition براش ميذاريم !!!!
ولی اون for نقش if رو ایفا میکنه!
لطفا کدتونو بذارید... اخرش یه نکته داره!
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
SABB گفت
Olympiad گفت
اينجوري باشه هرجا خواستيم يه for اضافه ميزنيم و فقط يه condition براش ميذاريم !!!!
ولی اون for نقش if رو ایفا میکنه!
لطفا کدتونو بذارید... اخرش یه نکته داره!
الان بايد برم...فردا كدشو ميذارم .....
 

rezashiri

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

کد
#include <iostream>

using namespace std;

unsigned long long num(unsigned long long n,unsigned long long k)
{
    unsigned long long output=0,m=k;
    while(n/m!=0)
    {
			  output+=n/m;
			  m*=k;
    }
    return output;
}

unsigned long long taj(unsigned long long n,unsigned long long a[],unsigned long long p[])
{
	unsigned long long i=2,j=0;
	while(n>1)
	{
			if(n%i==0)
			{
					p[j]=0;
					a[j]=i;
					while(n%i==0)
					{
							   p[j]++;
							   n/=i;
					}
					j++;
			}
			i++;
	}
	return j;
}

unsigned long long zero(unsigned long long x,unsigned long long y)
{
    unsigned long long a[100],p[100],l,i,d[100];
    int min=-1;
    l=taj(y,a,p);
    for(i=0;i<l;i++)
	  d[I]=0;
    for(i=0;i<l;i++)
	  d[I]+=num(x,a[I]);
    for(i=0;i<l;i++)
    {
	  d[I]/=p[I];
	  if((d[I]<min)||(min==-1))
		min=d[I];
    }
    return min;
}

int main()
{
    unsigned long long x,y;
    do{ 
	   cin >> x >> y;
	   if((x!=0)||(y!=0)) cout << zero(x,y) << endl;
    } while((x!=0)||(y!=0));
    return 0;
}
[I][I][I][I][I][I][I]
[/I][/I][/I][/I][/I][/I][/I]
[/I][/I][/I][/I][/I][/I][/I]کد شما هم تایم میشه و هم اعداد بزرگ رو ساپومرت نمی که...

چطوری می خواین 18^10 رو توی unsigned long long جا بدین؟!؟

 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
SABB گفت
18^10 که کوچیکه، بزرگ تر از اینا هم تو unsigned long long جامیشه


http://en.wikipedia.org/wiki/Limits.h
الآن این کد توی کامپیوتر شما کامپایل می شه؟!؟


کد
#include <iostream>
#include <cstdio>
#include <conio.h>
#include <limits.h>
using namespace std;
int main()
{
    unsigned long long a=12345678910111213;
    cout<<a;
    getch();
    return 0;
}
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
rezashiri گفت
SABB گفت
18^10 که کوچیکه، بزرگ تر از اینا هم تو unsigned long long جامیشه


http://en.wikipedia.org/wiki/Limits.h
الآن این کد توی کامپیوتر شما کامپایل می شه؟!؟

کد
#include <iostream>
#include <cstdio>
#include <conio.h>
#include <limits.h>
using namespace std;
int main()
{
    unsigned long long a=12345678910111213;
    cout<<a;
    getch();
    return 0;
}
این ورودی به عنوان یه عدد ثابت پذیرفته نمی شه و ارور Integer CONSTANT too long for "long" type رو میده؛ در حالیکه اگه همین عدد رو از ورودی بگیرید و بعد cout یا هر کار دیگه ای بکنید هیچ اروری نمی ده.یا حتی اگه تعریف کنید:
unsigned long long x = 10^9, y = 10^9
و بعد اونا رو در هم ضرب کنید.
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
برنامه مو بهتر کردم ولی بازم Time Limit میشه
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
خطاي زمان ترجمه همون Time limit ه ؟؟؟
 

Goharshady

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

Goharshady

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

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
rezashiri گفت
SABB گفت
18^10 که کوچیکه، بزرگ تر از اینا هم تو unsigned long long جامیشه


http://en.wikipedia.org/wiki/Limits.h
الآن این کد توی کامپیوتر شما کامپایل می شه؟!؟


کد
#include <iostream>
#include <cstdio>
#include <conio.h>
#include <limits.h>
using namespace std;
int main()
{
    unsigned long long a=12345678910111213;
    cout<<a;
    getch();
    return 0;
}

مشکل این کد چیز دیگه ای هست. وقتی شما همینطوری وسط کدتون یه عدد می زنید کامپایلر سعی می کنه اون عدد رو تو یه int بذاره بعد a را برابر اون int قرار بده به همین دلیل کامپایل نمی شه. برای این که به کامپایلر بفهمونید این عدد خیلی بزرگه بعدش ll یا ull بنویسید.
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
لیست سوالات acm.sharif..ir از کجا می آید؟ من نمی تونم پیداش کنم
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
بعد کجا؟
 

Goharshady

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