Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
[center:bc4fb3ffe7]۳۵[/center:bc4fb3ffe7]
عدد ۱۹۷ یک عدد اول دایره ای است زیرا همه ی چرخشهای ارقام آن دور دایره یعنی ۱۹۷ و ۹۷۱ و ۷۱۹ اعدادی اول هستند.
می دانیم که ۱۳ تا عدد اول دایره ای کمتر از ۱۰۰ وجود دارد یعنی:
۲و۳و۵و۷و۱۱و۱۳و۱۷و۳۱و۳۷و۷۱و۷۳و۷۹و۹۷
چند عدد اول دایره ای کمتر از یک میلیون وجود دارد؟
 

MMZ17

New Member
ارسال ها
16
لایک ها
1
امتیاز
0
سلام.
با اجازتون منم به جمع شما ملحق شم.
برای سوال 35 هم این کد رو نوشتم.
کد
#include <iostream.h>
#include <math.h>
int aval(long int a)
{
long int p=0;
for(long int i=2;i<sqrt(a)+1;i++)
{
if (a%i==0)
p++;
}
if(p==0)
return 1;
else
return 0;
}
long int rotate(long int a)
{
long int h,num=0,p=0;
h=a%10;
p=a/10;
while(a>0)
{
num++;
a=a/10;
}
h=h*pow(10,num-1);
p+=h;
return p;
}
int main()
{
long int count,sum,s;
sum=0;
count=0;
for(long int a=3;a<1000000;a+=2)
{
sum=0;
s=a;
if(aval(s)==1)
{
for(int h=0;h<6;h++)
{
s=rotate(s);
if(aval(s)==1)
sum++;
}
if (sum==6)
{
count++;
cout<<count<<"    "<<a<<endl;
}
}
}
return 0;
}
خوبه؟
می دونم مبتدیه ولی منم تازه کارما.............
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
خب به جمع ما خوش آمدید
با شما شدیم ۶ تا!
این سوالتون accept شد؟
ضمنا حالا که به ما ملحق شده اید باید بدونید که ما خیلی فشرده کار می کنیم بنابراین لطفا عضو این سایتها بشوید:
http://ace.delos.com/usacogate
http://www.codeforces.com/
http://www.codechef.com/
http://projecteuler.net/
http://acm.sgu.ru/
چون ما اکثر سوالاتمون رو از این سایتها می آوریم. اینجا که ماراتن Project Euler نام دارد هم فقط به سوالات چهارمین سایت اختصاص پیدا کرده.
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
[center:1a079085ee]۳۵[/center:1a079085ee]
MMZ17 گفت
سلام.
با اجازتون منم به جمع شما ملحق شم.
برای سوال 35 هم این کد رو نوشتم.
کد
#include <iostream.h>
#include <math.h>
int aval(long int a)
{
long int p=0;
for(long int i=2;i<sqrt(a)+1;i++)
{
if (a%i==0)
p++;
}
if(p==0)
return 1;
else
return 0;
}
long int rotate(long int a)
{
long int h,num=0,p=0;
h=a%10;
p=a/10;
while(a>0)
{
num++;
a=a/10;
}
h=h*pow(10,num-1);
p+=h;
return p;
}
int main()
{
long int count,sum,s;
sum=0;
count=0;
for(long int a=3;a<1000000;a+=2)
{
sum=0;
s=a;
if(aval(s)==1)
{
for(int h=0;h<6;h++)
{
s=rotate(s);
if(aval(s)==1)
sum++;
}
if (sum==6)
{
count++;
cout<<count<<"    "<<a<<endl;
}
}
}
return 0;
}
خوبه؟
می دونم مبتدیه ولی منم تازه کارما.............

من الآن جواب را چک کردم. متاسفانه جوابی که برنامه ی شما می دهد اشتباه است.
لطفا در پستهای بعدی این قوانین را رعایت کنید:
در تاپیکهایی که عنوان ماراتن دارند بالای همه ی پستهایتان شماره ی سوال را بزرگ بنویسید
در کدها طبق سند استاندارد ++C عمل کنید یعنی به جای iostream.h از iostream استفاده کنید و به جای math.h بنویسید cmathهمچنین بعد از include ها بنویسید:
using namespace std;
ممنون. فکر می کنم کدتون درسته ولی یک کمی باید ریزه کاری هاشو تغییر بدین. موفق باشید

ضمنا من اسم شما رو هم نمی دونم
 

MMZ17

New Member
ارسال ها
16
لایک ها
1
امتیاز
0
Goharshady گفت
[center:034c6a431e]۳۵[/center:034c6a431e]
MMZ17 گفت
سلام.
با اجازتون منم به جمع شما ملحق شم.
برای سوال 35 هم این کد رو نوشتم.
کد
#include <iostream.h> 
#include <math.h> 
int aval(long int a) 
{ 
long int p=0; 
for(long int i=2;i<sqrt(a)+1;i++) 
{ 
if (a%i==0) 
p++; 
} 
if(p==0) 
return 1; 
else 
return 0; 
} 
long int rotate(long int a) 
{ 
long int h,num=0,p=0; 
h=a%10; 
p=a/10; 
while(a>0) 
{ 
num++; 
a=a/10; 
} 
h=h*pow(10,num-1); 
p+=h; 
return p; 
} 
int main() 
{ 
long int count,sum,s; 
sum=0; 
count=0; 
for(long int a=3;a<1000000;a+=2) 
{ 
sum=0; 
s=a; 
if(aval(s)==1) 
{ 
for(int h=0;h<6;h++) 
{ 
s=rotate(s); 
if(aval(s)==1) 
sum++; 
} 
if (sum==6) 
{ 
count++; 
cout<<count<<"    "<<a<<endl; 
} 
} 
} 
return 0; 
}
خوبه؟
می دونم مبتدیه ولی منم تازه کارما.............

من الآن جواب را چک کردم. متاسفانه جوابی که برنامه ی شما می دهد اشتباه است.
لطفا در پستهای بعدی این قوانین را رعایت کنید:
در تاپیکهایی که عنوان ماراتن دارند بالای همه ی پستهایتان شماره ی سوال را بزرگ بنویسید
در کدها طبق سند استاندارد ++C عمل کنید یعنی به جای iostream.h از iostream استفاده کنید و به جای math.h بنویسید cmathهمچنین بعد از include ها بنویسید:
using namespace std;
ممنون. فکر می کنم کدتون درسته ولی یک کمی باید ریزه کاری هاشو تغییر بدین. موفق باشید

ضمنا من اسم شما رو هم نمی دونم
.
اسم من:محمد معین(معین صدام کنین)
والا این کد من قبلا درست جواب می داد و خودمم این سوالو accept شدم.
الان باید دوباره چکش کنم ببینم کجاش تغییر کرده.
 

MMZ17

New Member
ارسال ها
16
لایک ها
1
امتیاز
0
MMZ17 گفت
سلام.
با اجازتون منم به جمع شما ملحق شم.
برای سوال 35 هم این کد رو نوشتم.
کد
#include <iostream.h> 
#include <math.h> 
int aval(long int a) 
{ 
long int p=0; 
for(long int i=2;i<sqrt(a)+1;i++) 
{ 
if (a%i==0) 
p++; 
} 
if(p==0) 
return 1; 
else 
return 0; 
} 
long int rotate(long int a) 
{ 
long int h,num=0,p=0; 
h=a%10; 
p=a/10; 
while(a>0) 
{ 
num++; 
a=a/10; 
} 
h=h*pow(10,num-1); 
p+=h; 
return p; 
} 
int main() 
{ 
long int count,sum,s; 
sum=0; 
count=1; 
for(long int a=3;a<1000000;a+=2) 
{ 
sum=0; 
s=a; 
if(aval(s)==1) 
{ 
for(int h=0;h<6;h++) 
{ 
s=rotate(s); 
if(aval(s)==1) 
sum++; 
} 
if (sum==6) 
{ 
count++; 
cout<<count<<"    "<<a<<endl; 
} 
} 
} 
return 0; 
}
خوبه؟
می دونم مبتدیه ولی منم تازه کارما.............
.
نمی دونم چرا ولی این کد توی Turbo c++ درست جواب می ده ولی توی dev c++ غلط جواب می ده؟؟؟؟؟؟؟؟؟؟
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
دلیلش نسبتا واضحه.
وقتی ++C معرفی شد بعد از یه مدت نسخه های مختلفی از اون عرضه شد. به همین دلیل سازمان ملی استاندارد آمریکا ANSI یک نسخه ی استاندارد از ++C به نام ++ANSI/ISO C را معرفی کرد. الآن همه جا از این نسخه استفاده می شود و DEVCPP هم با استفاده از کامپایلر ++G و همین نسخه کار می کند اما TURBO CPP قبل از ارائه ی سند استاندارد ++C ساخته شده است و این استانداردها را رعایت نمی کند.
برای شرکت در مسابقات و contest ها باید از نسخه ی استاندارد استفاده کنیم. شما هم سعی کنید این کد تون رو طوری تغییر بدین که با ++G درست کار کنه.
موفق باشید
 

MMZ17

New Member
ارسال ها
16
لایک ها
1
امتیاز
0
35
اینم کد اصلاح شده

البته اعداد رو هم می نویسه.

کد
#include <iostream> 
#include <cmath> 
#include <conio>
using namespace std;
int aval(long int a) 
{ 
long int p=0; 
for(long int i=2;i<sqrt(a)+1;i++) 
{ 
if (a%i==0) 
p++; 
} 
if(p==0) 
return 1; 
else 
return 0; 
} 
long int rotate(long int a) 
{ 
long int h,n,num=0,p=0; 
h=a%10; 
num=1;
p=a/10; 
while(a>0) 
{ 
num*=10; 
a=a/10; 
} 
n=(h*num)/10; 
p+=n; 
return p; 
} 
int main() 
{ 
long int count,sum,s; 
sum=0; 
count=1; 
for(long int a=3;a<1000000;a+=2) 
{ 
sum=0; 
s=a; 
if(aval(s)==1) 
{ 
for(int h=0;h<6;h++) 
{ 
s=rotate(s); 
if(aval(s)==1) 
sum++; 
} 
if (sum==6) 
{ 
count++; 
cout<<count<<"    "<<a<<endl; 
} 
} 
} 
getch();
return 0; 
}
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
اينم كد مزخرف من
...... بد تر از اين نميشد بنويسي !!! خيلي احمقانه نوشتم......
فقط از عدد 100 شروع ميكنه و آخرش به علاوه 13 ميشه

هر عددي هم كه چك ميكنه.....يه OK ميده (براي اينكه بفهمين تا كجا چك كرده !!
)!!!!
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
[center:ad47703acf]35[/center:ad47703acf]
Olympiad گفت
اينم كد مزخرف من
...... بد تر از اين نميشد بنويسي !!! خيلي احمقانه نوشتم......
فقط از عدد 100 شروع ميكنه و آخرش به علاوه 13 ميشه

هر عددي هم كه چك ميكنه.....يه OK ميده (براي اينكه بفهمين تا كجا چك كرده !!
)!!!!

Project Euler یک قانون کلی داره:
مهم اینه که accept بشی!!
این هم کد من:
http://snipt.net/goharshady/euler35
 

Goharshady

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

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
SABB گفت
[center:2270ed255d]25[/center:2270ed255d]اولین جمله ی دنباله ی فیبوناچی که 1000 رقمی است کدام است؟ (مطلوب شماره ی آن است نه خود آن)
امروز همون کد bignum رو یک کمی تغییر دادم تا جواب این سوال بشه:
http://snipt.net/goharshady/euler25
 

MMZ17

New Member
ارسال ها
16
لایک ها
1
امتیاز
0
کد من برای سوال 46:
.
.
.
کد
#include <iostream.h>
#include <conio.h>
int aval(long int a)
{
  if(a==2)
    return 1;
    if(a==1)
    return 0;
  if(a%2==0)
    return 0;
    for(long int i=3;i*i<=a;i+=2)
  {
		   if(a%i==0)
		   return 0;
  }
    return 1;
}
int can(long int a)
{
  for(long int y=2;y<a;y++)
    {
	if(aval(y)==1)
		   {
	for(long int u=1;u<a;u++)
		   {
	   long int sum;
				  sum=y+2*u*u;
	   if(sum==a)
				  return 1;
	}
	}
  }
  return 0;
}
int main()
{
  for(long int a=9;a>0;a+=2)
  {
	if(aval(a)==0)
	{
	    if(can(a)==0)
	    {
	    cout<<a<<endl;
	    break;
	    }
	}
  }
  cout<<"finish";
  getch();
  return 0;
}
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
[center:9fb2c4c112]


كد من براي سوال 36 :

کد
#include <iostream>
#include <conio.h>
#include <cmath>
 using namespace std;
 int f(int x)
   {
	int a[1000],b[1000],r=0,r1=0,t=x;
	int flag=1;
	while(x>0)
	 {
	  a[r]=x%10;
	  x/=10;
	  r++;
	 }
	while(t>0)
	  {
	    b[r1]=t%2;
	    t/=2;
	    r1++;
	  }
	for(int i=0;i<=r/2;i++)
	 if(a[i]!=a[r-i-1])
	  flag=0;
	for(int i=0;i<=r1/2;i++)
	 if(b[i]!=b[r1-i-1])
	  flag=0; 
	return flag;
   }
 int main()
  { 
	unsigned long long s=0;
	for(int i=1;i<1000000ll;i++)
	 if(f(i))
	  s+=i;
	cout<<s;
	getch();
	return 0;		
  }
[/center:9fb2c4c112]
 
ارسال ها
38
لایک ها
3
امتیاز
0
سلام
با اجازه ی دوستان ، من هم وارد گروه Project Euler میشم! میدونم که راه حل سوال 25 را آقای گوهرشادی قرار داده اند اما احساس می کنم که راه حل من نیز برای این سوال میتونه جالب باشه : کد من

خوب میشه گفت قطعا براتون عجیبه که این راه حل از کجا آمده پس یه توضیحی در موردش میدم. پس از خواندن سوال چون خیلی خوب BigNum بلد نبودم رفتم تو گوگل برای پیدا کردن یک راه حل ابتکاری و این لینک به دردم خورد : www.maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/fibFormula.html+fibonacci+numbers+formula&hl=en&strip=1]Fibonacci numbers[/URL] !! بعدش چیزای جالبی دیدم. به طور کلی برای پیدا کردن تعداد ارقام
از این فرمول استفاده میکنیم :

که در این رابطه ،
یعنی همان عدد یا نسبت طلایی معروف که با دانستن این موارد و نوشتن یک کد کوتاه ، سوال حل شد!
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
Sepehrmousavi گفت
سلام
با اجازه ی دوستان ، من هم وارد گروه Project Euler میشم! میدونم که راه حل سوال 25 را آقای گوهرشادی قرار داده اند اما احساس می کنم که راه حل من نیز برای این سوال میتونه جالب باشه : کد من

خوب میشه گفت قطعا براتون عجیبه که این راه حل از کجا آمده پس یه توضیحی در موردش میدم. پس از خواندن سوال چون خیلی خوب BigNum بلد نبودم رفتم تو گوگل برای پیدا کردن یک راه حل ابتکاری و این لینک به دردم خورد : www.maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/fibFormula.html+fibonacci+numbers+formula&hl=en&strip=1]Fibonacci numbers[/URL] !! بعدش چیزای جالبی دیدم. به طور کلی برای پیدا کردن تعداد ارقام
از این فرمول استفاده میکنیم :

که در این رابطه ،
یعنی همان عدد یا نسبت طلایی معروف که با دانستن این موارد و نوشتن یک کد کوتاه ، سوال حل شد!

راه قشنگیه.

فقط فکر نکنید که من برای سوال واقعا ۶۰ خط کد نوشته ام. چون اون کد رو من قبلا برای bignum زده بودم و با یک کمی تغییر تونست جواب این سوال رو بده.
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
[center:8ec46c0740]


سوال راحتیه ...


[/center:8ec46c0740]
 

MMZ17

New Member
ارسال ها
16
لایک ها
1
امتیاز
0
52


این کد منه
کد
#include <iostream.h> 
#include <conio.h> 
int tasavi(int a[10],int b[10]) 
{ 
    for(int i=0;i<10;i++) 
    { 
		  if(a[I]!=b[I]) 
		  return 0; 
    } 
    return 1; 
} 
int main() 
{ 
    for(long int b=1;b<200000;b++) 
    { 
		  long int h=b; 
		  int v=0; 
		  for(int c=2;c<7;c++) 
		  { 
				long int l=c*b; 
				int g[10],f[10]; 
				for(int to=0;to<10;to++) 
				{ 
					   g[to]=10; 
					   f[to]=10; 
				} 
				while(b>0) 
				{ 
						int y=b%10; 
						g[y]=0; 
						b=b/10; 
				} 
				while(l>0) 
				{ 
						int u=l%10; 
						f[U]=0; 
						l=l/10; 
				} 
				if(tasavi(f,g)==1) 
				v++; 
				b=h; 
		  } 
		  if(v==5) 
		  cout<<h<<endl; 
		  b=h; 
    } 
    cout<<"finish"; 
    getch(); 
    return 0; 
}
[/U][/I][/I]
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
[center:b123fd3a17]


[/center:b123fd3a17]
کد من:

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

bool xi(int x,int y)
{
    int d[100],d2[100],tedad=0;
    for(int i=0;y>0;i++)
    {
		    d[I]=y%10;
		    y=y/10; 
		    tedad++;	   
    }
    
	   for(int i=0;x>0;i++)
    {
		    d2[I]=x%10;
		    for(int j=0;j<tedad;j++)
		    {
						    if(d2[I]==d[j]) {d[j]=-1; break;}
						    if(d2[I]!=d[j] && j==tedad-1) return false;
		    }
		    x=x/10;	    
    }
return true;
}    
    

int main()
{
    int a=2134,b;
for(int i=1;i<100000000;i++)    
   {
	    if(xi((2*i),i) && xi((3*i),i) && xi((4*i),i) && xi((5*i),i) && xi((6*i),i) ) 
	    {
				printf("I find it!?  It is %d",i);
				break;
		}
   }
    
    getch();
    return 0;
}
[/I][/I][/I][/I]
 

Goharshady

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