ارسال ها
143
لایک ها
79
امتیاز
0
سوال B :

یک شماره تلفن n رقمی به شما داده می شه , به دسته های 2 یا 3 رقمی تقسیمش کنید و بین دسته ها کاراکتر "-" بنویسید .

اگر جواب مسئله یکتا نبود , یکی از جواب ها را به دلخواه چاپ کنید .
 

Olympiad

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

کد
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
  int main()
    {
	 int n;
	 cin>>n;
	 char a[n];
	 for(int i=0;i<n;i++)
	   cin>>a[I];
	 if(n==2)
	   cout<<a[0]<<a[1];
	 if(n==3)
	  cout<<a[0]<<a[1]<<a[2];
	 else if(n%2==0)
	   {
		for(int j=0;j<n-2;j+=2)
		    cout<<a[j]<<a[j+1]<<"-";
		cout<<a[n-2]<<a[n-1];
	   }
	  else if(n%2==1)
	    {
		 for(int l=0;l<n-3;l+=2)
			  cout<<a[l]<<a[l+1]<<"-";		  
		  cout<<a[n-3]<<a[n-2]<<a[n-1];
	    }
	    getch();
	 return 0;
	 
  }
[/I]
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
اي بابا چه اشتباه مسخره اي كردم ها!!!!!!!!!!!!!!اونجا بايد else if مينوشتم
براي همين acc نشد......




کد
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
  int main()
    {
	 int n;
	 cin>>n;
	 char a[n];
	 for(int i=0;i<n;i++)
	   cin>>a[I];
	 if(n==2)
	   cout<<a[0]<<a[1];
    else  if(n==3)
	  cout<<a[0]<<a[1]<<a[2];
	 else if(n%2==0)
	   {
		for(int j=0;j<n-2;j+=2)
		    cout<<a[j]<<a[j+1]<<"-";
		cout<<a[n-2]<<a[n-1];
	   }
	  else if(n%2==1)
	    {
		 for(int l=0;l<n-3;l+=2)
			  cout<<a[l]<<a[l+1]<<"-";		  
		  cout<<a[n-3]<<a[n-2]<<a[n-1];
	    }
	    getch();
	 return 0;
	 
  }
[/I]
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
navidjalalmanesh گفت
n تا دومینو داریم (اعداد روی دومینو ها 0 تا 6 است) که روی هر دومینو دو عدد نوشته شده است , می خواهیم این دومینو ها رو به طور افقی در یک ردیف طوری بچینیم که 2 دومینوی مجاور هم , عددهایشان که کنار هم قرار گرفته اند یکسان باشند , همچنین مجاز به چرخاندن دومینو ها نیز هستید .

اگر این کار شدنی است , شماره دومینو ها رو به ترتیب قرار گرفتن در صف در خروجی چاپ کنید , همچنین اگر دومینو ای را چرخانده اید بعد از چاپ شماره اش علامت - و اگر نچرخانده اید علامت + بنویسید .
در صورت امکان ناپذیر بودن No solution چاپ کنید .
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
به نظر من یکم سخته !؟! نیست؟!؟

آقای جلال منش می شه یه تابعی بنویسید که فقط اعداد اول توش باشن(یعنی نیازی به چک کردن همه ی اعداد نباشه).
 
ارسال ها
143
لایک ها
79
امتیاز
0
rezashiri گفت
به نظر می یکم سخته !؟! نیست؟!؟

آقای جلالمنش می شه یه تابعی بنویسید که فقط اعداد اول توش باشن(یعنی نیازی به چک کردن همه ی اعداد نباشه).
آره سوال 101 فعلا سخته (یعنی ممکنه تئوریش آسون باشه ولی Coding اش سخته براتون) , برید یه سوال دیگه فعلا .

در رابطه با تابع اعداد اول هم نیازی نیست برای کم کردن اردر سوال , فقط اعداد اول رو چک کنی , اگه فکر می کنی تایم می شی الگوریتمت رو بهتر کن . در هر صورت اگه صورت سوال رو نوشته بودی راحت تر می تونستم بهت جواب بدم .

پی نوشت : جلال منش سر هم نیست :D :D :D
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
navidjalalmanesh گفت
rezashiri گفت
به نظر می یکم سخته !؟! نیست؟!؟

آقای جلالمنش می شه یه تابعی بنویسید که فقط اعداد اول توش باشن(یعنی نیازی به چک کردن همه ی اعداد نباشه).
آره سوال 101 فعلا سخته (یعنی ممکنه تئوریش آسون باشه ولی Coding اش سخته براتون) , برید یه سوال دیگه فعلا .

در رابطه با تابع اعداد اول هم نیازی نیست برای کم کردن اردر سوال , فقط اعداد اول رو چک کنی , اگه فکر می کنی تایم می شی الگوریتمت رو بهتر کن . در هر صورت اگه صورت سوال رو نوشته بودی راحت تر می تونستم بهت جواب بدم .

پی نوشت : جلال منش سر هم نیست :D :D :D
سوال 231.

کد من اینه ولی ...:

کد
#include <stdio.h>
#include <conio.h>
#include <cmath>

bool isprime(int x)
{
	float sqrtx=sqrt(x);
	if(x==3) return true;
	if(x==4) return false;
		  for(int i=3;i<=sqrtx;i+=2){
				if(x%i==0) {return false; break;}}
				return true;}		 

int main()
{
    int n,tedad=0,b[100000],k=0;
    
    scanf("%d",&n);
    
	 for(int j=3;j<n;j+=2)
	 {
		    if(isprime(j) && isprime(j+2) && j+2<=n){
		    b[k]=j; k++;
		    tedad++;
		    }
	 }
	

printf("%d",tedad);

for(int i=0;i<k;i++)
{
	   printf("\n2 %d",b[I]);
}


getch();
return 0;
}
[/I]
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
منم واسه 231 ، Time limit شدم ...
کد
#include <stdio.h>
#include <conio.h>	 
  int ip(int k)
	{
	  int flag=1;
	  for(int i=2;i<=(k/2)&&flag==1;i++)
	   if(k%i==0)
	    flag=0;
	  return flag;
	}
   int main()
	{
	  int count=0,n,i,j;
	  scanf("%d",&n);
	  for(i=3;i<n;i+=2)
		 for(j=i+2;j<n;j+=2)
			if(ip(i+j)==1&&(i+j)<=n&&ip(i)==1&&ip(j)==1)
			    count++;
	  if(n>=5)
	    for(int j=3;j<n;j+=2)
		if(ip(j)&&j+2<=n)
		  count++;
	    printf("%d\n",count);
	  if(n>=5)
	    for(int j=3;j<n;j+=2)
		if(ip(j)&&j+2<=n)
		  printf("2%2d\n",j);
	  for(int i=3;i<n;i+=2)
		 for(int j=i+2;j<n;j+=2)
			    if(ip(i+j)&&(i+j)<=n&&ip(i)&&ip(j))
					    printf("%d%2d\n",i,j); 
   
	  getch();
	  return 0;
	}
 

SABB

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

کد
#include <iostream>
using namespace std;

bool isprime(unsigned long long n)
{
	for(unsigned long long i=2; i*i<n; i++)
			   if((n%i == 0)||(n+2%i == 0)) return false;
	return true;
}

int main()
{
    ios::sync_with_stdio(false);
    unsigned long long n, num = 0, i, a[100000];
    cin >> n;
    for(i=3; i<n-1; i+=2) 
			  if(isprime(i))
			  {
									a[num] = i;
									num++;
			  }
    cout << num << endl;
    for(i=0; i<num; i++) cout << "2 " << a[i] << endl;
    return 0;
}
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
231 SGU
بالاخره Acc شدم!
کد
#include <iostream>
#include <stdio.h>
using namespace std;

bool isprime(int n)
{
	int i;
	if(n == 3 || n == 5) return true;
	if(n%10 == 5 || n%10 == 3) return false;
	for(i=2; i*i<=n; i++)
			   if((n%i == 0) || ((n+2)%i == 0)) return false;
	for( ; i*i<=n+2; i++)
			   if((n+2)%i == 0) return false;  
	return true;
}

int main()
{
    int n, num = 0, i, a[100000];
    scanf("%d",&n);
    for(i=3; i<n-1; i+=2) 
			  if(isprime(i))
			  {
									a[num] = i;
									num++;
			  }
    printf("%d",num);
    for(i=0; i<num; i++) printf("\n2 %d",a[i]);
    return 0;
}


 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
[center:4c19836c2c]SGU 222

یک صفحه شطرنجی n×n داریم. می خواهیم k رخ را طوری در آن قرار دهیم که هیچکدام یکدیگر را تهدید نکنند. تعداد این حالات را بیابید.
[/center:4c19836c2c]
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
SABB گفت
231 SGU
بالاخره Acc شدم!
کد
#include <iostream>
#include <stdio.h>
using namespace std;

bool isprime(int n)
{
	int i;
	if(n == 3 || n == 5) return true;
	if(n%10 == 5 || n%10 == 3) return false;
	for(i=2; i*i<=n; i++)
			   if((n%i == 0) || ((n+2)%i == 0)) return false;
	for( ; i*i<=n+2; i++)
			   if((n+2)%i == 0) return false;  
	return true;
}

int main()
{
    int n, num = 0, i, a[100000];
    scanf("%d",&n);
    for(i=3; i<n-1; i+=2) 
			  if(isprime(i))
			  {
									a[num] = i;
									num++;
			  }
    printf("%d",num);
    for(i=0; i<num; i++) printf("\n2 %d",a[I]);
    return 0;
}


ميشه بگي چه الگوريتمي براي تعيين اعداد اول استفاده كردي؟!!؟!!!!!
[/I]پ.ن :

راستي تو سوال 222 مهره ها با هم تفاوت دارند ، نه؟؟؟
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
منم بالاخره Accepted شدم.(sgu 231)


کد من:


کد
#include <stdio.h>
#include <conio.h>
#include <cmath>

bool isprime(int x)
{
	float sqrtx=sqrt(x);
	if(x==3) return true;
	if(x==4) return false;
		  for(int i=3;i<=sqrtx+1;i+=2){
				if(x%i==0 || (x+2)%i==0) {return false; break;}}
		return true;
	}

int main()
{
    int n,tedad=0,b[100000],k=0;
    
    scanf("%d",&n);
    
	 for(int j=3;j<n;j+=2)
	 {
		    if(isprime(j) && j+2<=n){
		    b[k]=j; k++;
		    tedad++;
		    }
	 }
	

printf("%d",tedad);


for(int i=0;i<k;i++)
{
	   printf("\n2 %d",b[I]);
}


getch();
return 0;
}
[/I]
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
تو سوال 222 مهره ها متمایز نیستند.
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
كد 231:

کد
#include <stdio.h>
#include <conio.h>  
#include <math.h>    
  int ip(int k)
	{
	  int flag=1;
	  if(k%2==0)
	   flag=0;
	  for(int i=3;i<=(sqrt(k))+1&&flag==1;i+=2)
	   if(k%i==0||(k+2)%i==0)
	    flag=0;
	  return flag;
	}
   int main()
	{
	   long int n,a[10000],r=0,count=0;
	   scanf("%d",&n);
	   for(int i=3;i<n;i+=2)
		{
		 if(ip(i)&&(i+2<=n)) 
		   {
			a[r]=i;
			r++;
			count++;
		   }
		 }
	    printf("%d",count);
	    for(int h=0;h<r;h++)
		printf("\n2 %d",a[h]);
	  getch();
	  return 0;
	}
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
کد من واسه sgu 222:
کد
#include <iostream>
using namespace std;

unsigned long long f(unsigned long long n)
{
    if((n == 0) || (n == 1)) return 1;
    return n*f(n-1);
}

void eas(unsigned long long &nom, unsigned long long &den)
{
	unsigned long long min = nom < den ? nom : den;
	for(unsigned long long i=2; i<=min; i++)
			   if((nom%i == 0) && (den%i == 0))
			   {
					  den /= i;
					  nom /= i;
			   }
}

int main()
{
    ios::sync_with_stdio(false);
    unsigned long long n, k, nom = 1, den = 1, j;
    cin >> n >> k;
    j = k;
    if(k > n)
    {
	    cout << 0;
	    return 0;
    }
    for(unsigned long long i=n; i>n-k; i--) 
    {
			  nom *= i*i;
			  den *= j;
			  eas(nom, den);
			  if(j != 1) j--;
    }
    cout << nom/den;
    return 0;
}
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
قبلا یه قانون تو این تاپیک تصویب شد!!!! اونم اینکه همراه کد ها الگوریتم هم نوشته بشه .... فکر کنم قانون خوبی بود!!!

به SABB : میشه بگی اون جایی که نوشتی &den و.... یعنی چی ..؟؟؟؟ چیکار میکنه!!؟؟؟؟
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
Olympiad گفت
میشه بگی اون جایی که نوشتی&den و.... یعنی چی ..؟؟؟؟ چیکار میکنه!!؟؟؟؟
یعنی باز گشت با ارجاع.

خود متغیر رو تو برنامه اصلی تغییر می ده.
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
من آخر نفهمیدم مشکل این کد برای سوال 154 چیه؟!؟


میشه یه نفر بگه !

کد
#include <stdio.h>
#include <conio.h>
#include <math.h>


int main()
{
    unsigned long int a,b,c;
    start:
    scanf("%d",&a);
    
    for(b=0;b<100000000;b++){   
    c=b/5+b/25+b/125+b/625+b/pow(5,5)+b/pow(5,6)+b/pow(5,7)+b/pow(5,8)+b/pow(5,9)+b/pow(5,10)+b/pow(5,11)+b/pow(5,12);
    if(c>a) goto end;
    if(c==a){
    printf("%d",b);
    goto end2;}}
    
    end:
    if(c!=a)
    printf("No solution");
    
    end2:
    getch();
    return 0;
}
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
rezashiri گفت
Olympiad گفت
میشه بگی اون جایی که نوشتی&den و.... یعنی چی ..؟؟؟؟ چیکار میکنه!!؟؟؟؟
یعنی باز گشت با ارجاع.

خود متغیر رو تو برنامه اصلی تغییر می ده.
میشه یکم فارسی تر حرف بزنید!!!!!!!!!!؟؟؟؟
 
بالا