SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
[center:7f8c5f01dd]


دستت درد نکنه، سوال خیلی قشنگی بود.
(مخصوصا اگه محدودیتش بهتر بود، مثلا x,y<1000)
یه سوال: این سوال فرمول خاصی داره؟
[/center:7f8c5f01dd]
 

rezashiri

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

هر چند جوابش تو همون سایتی که سوال رو گرفتی هست.

ولی توضیح بده چون می خوام خودم روش فکر کنم.

از این به بعد هم اگه ممکنه سوالاتی که با آرایه حل می شن نذار! چون من هنوز آرایه ها رو نخوندم.
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
SABB گفت
[center:950908bb17]


دستت درد نکنه، سوال خیلی قشنگی بود.
(مخصوصا اگه محدودیتش بهتر بود، مثلا x,y<1000)
یه سوال: این سوال فرمول خاصی داره؟
[/center:950908bb17]
البته این برنامه ای که من نوشتم فاکتوریل رو حساب نمی کنه (چون باید با آرایه نوشته بشه)

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

int main()
{
    long a,b,c,d,tedad=0;
    
    printf("please input one number in mabnaye 10:");
    scanf("%d",&a);
    printf("\nbe kodam mabna?");
    scanf("%d",&c);
    d=a;
    start:
    
    if(a>(c-1)){
    b=a%c;
    if(b<1) tedad++;
    if(b>=1) goto end;
    a=a/c;
    goto start;}
    
    end:
    printf("\nadad %d dar mabnaie %d be %d sefr khatm mishavad.\n",d,c,tedad);
    
    getch();
    return 0;
}
فرمول خاصی فکر نکنم.

سوال اصلی هم اعداد بزرگ بود مثلا کمتر از 100000000.
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
rezashiri گفت
یا من خیلی خنگم یا سوال پیچیده است می شه یکم توضیح بدید!؟!؟

هر چند جوابش تو همون سایتی که سوال رو گرفتی هست.

ولی توضیح بده چون می خوام خودم روش فکر کنم.

از این به بعد هم اگه ممکنه سوالاتی که با آرایه حل می شن نذار! چون من هنوز آرایه ها رو نخوندم.
مثلا طول کلمه ی این نمی تونه 2 باشه: 0001101100
چون اگه از سمت چپ دو تا دو تا بیت هاشو از هم جدا کنیم اون وقت 00 دو بار تکرار شده.
حالا اگه بخواهیم ببینیم 010 طول کلمه اش دو هست یا نه، چون تعداد بیت هاش بر طول کلمه ما بخشپذیر نیست اول به تعداد مورد نیاز به سمت چپش صفر اضافه می کنیم. مثلا این چون تعدادش بر دو بخشپذیر نیست اول به 0010 تبدیلش می کنیم؛ یا مثلا اگه بخوایم ببینیم طول کلمه ی 1011 سه هست یا نه به 001011 تبدیلش می کنیم.
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
SABB گفت
rezashiri گفت
یا من خیلی خنگم یا سوال پیچیده است می شه یکم توضیح بدید!؟!؟

هر چند جوابش تو همون سایتی که سوال رو گرفتی هست.

ولی توضیح بده چون می خوام خودم روش فکر کنم.

از این به بعد هم اگه ممکنه سوالاتی که با آرایه حل می شن نذار! چون من هنوز آرایه ها رو نخوندم.
مثلا طول کلمه ی این نمی تونه 2 باشه: 0001101100
چون اگه از سمت چپ دو تا دو تا بیت هاشو از هم جدا کنیم اون وقت 00 دو بار تکرار شده.
حالا اگه بخواهیم ببینیم 010 طول کلمه اش دو هست یا نه، چون تعداد بیت هاش بر طول کلمه ما بخشپذیر نیست اول به تعداد مورد نیاز به سمت چپش صفر اضافه می کنیم. مثلا این چون تعدادش بر دو بخشپذیر نیست اول به 0010 تبدیلش می کنیم؛ یا مثلا اگه بخوایم ببینیم طول کلمه ی 1011 سه هست یا نه به 001011 تبدیلش می کنیم.
مثل این که اینم باید با آرایه نوشته بشه!


این سوالم خودتون حل کنید.

لطفا از این به بعد سوالات بدون آرایه بذارید.
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83

rezashiri

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

چون این دو تا آسونه با هم می ذارم:
[/center:0351a68b1d]الف) برنامه ای بنویسید که تمام اعداد کوچکتر از 1000000 که هم خودشان و هم مجموع ارقامشان مربع کامل است را چاپ کند.

ب)برنامه ای بنویسید که عددی کمتر از 1000000 از ورودی گرفته و اگر می توان آن را به صورت حاصل ضرب 2 عدد اول نوشت Yes چاپ

شود و در غیر این صورت No چاپ شود.
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
الف:
کد
#include <iostream>
#include <math.h>

using namespace std;

int isps(int n)
{
    double r=sqrt(n);
    if(n==r*r)
	  return 1;
    else
	  return 0;
}

int sum(int n)
{
    int s=0;
    while(n>0)
    {
		    s+=n%10;
		    n/=10;
    }
    return s;
}

int main()
{
    for(int i=2;i<1000000;i++)
	  if((isps(i))&&(isps(sum(i))))
		cout<<i<<endl;
    cin.get();
    return 1374;
}
ب:
کد
#include <iostream>
#include <math.h>

using namespace std;

int isprime(int n)
{
    int i;
    for(i=2;i<=sqrt(n);i++)
	  if(n%i==0)
		return 0;
    return 1;
}

int can(int n)
{
    int num=0,i;
    for(i=2;i<=sqrt(n);i++)
	  if((n%i==0)&&(isprime(i))&&(isprime(n/i)))
		return 1;
    return 0;
}

int main()
{
    int n;
    cin>>n;
    if(can(n))
	  cout<<"YES!";
    else
	  cout<<"NO!";
    cin.get();
    cin.get();
    return 1995;
}
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
[center:739b59c8a7]


برنامه ای بدون استفاده از آرایه ها بنویسید که n و سپس n عدد طبیعی از کاربر گرفته و ب.م.م شان را چاپ کند.​
[/center:739b59c8a7]
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
کد من برای 19:

الف)

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


int gamragham(int x)    
{
    int a=0,b;
    
    start:
    if(x>=10){
		b=x%10;
		a+=b;
		x=x/10;
		goto start;}
		
    if(x<10){
    a+=x;
    }
    return a;
}  


int main()
{
    int a,b,c,d,e=1;
    for(a=1;a<1000000;a++)
    for(b=1;b<1000;b++)
    for(c=1;c<1000;c++)
	   
    if(a==(b*b) && gamragham(a)==c*c){
    printf("%d ==> %d\n",e,a);
    e++;}
    
    getch();
    return 0;
}
ب)

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

bool isprime(int x)
{
int a=3;
float sqrtx=sqrt(x);

if (x<2) return false;

if (x<4) return true;

if (x%2==0) return false;

if(x>4)
  for (a=3;a<=sqrtx;a+=2)

    if (x%a==0)
	  return false;

if(x%a>0)
return true;
}
//--------------------------------------
int main()
{
    long a,b=2,sum=0,c;
    scanf("%d",&a);
    
		    if(a==1) printf("No");
    
    start:
		    if(sum==1 && isprime(a))
    goto end;
    
		    if(sum==1)
			 goto end2;
		    if(a%b==0&&isprime(b)){
			 sum++;
			 a=a/b;
			 goto start;}
    
    
		   else{
			 b++;
			 goto start;}

end:
    printf("Yes");
    getch();
    return 0;
    
end2:   
    printf("No"); 
    getch();
    return 0;
}
 

rezashiri

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


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

int BMM(int x,int y)
{
    int a=3;

    start:
    if(a>0)
    {
    a=x%y;
    x=y;
    y=a;
    goto start;
}
return x;
}
//------------------

int main()
{
    int a,b,c,bmm;
    
    printf("please input tedad number:");
    scanf("%d",&a);
    for(b=1;b<a+1;b++){
    printf("input adad %d:\t",b);
    scanf("%d",&c);
    if(b==1)
    bmm=c;
    bmm=BMM(bmm,c);}
    printf("\n______________________________________________");
    printf("\n\n\nB.M.M %d adad vared shode %d mibashad.",a,bmm);
    getch();
    return 0;
}
 

rezashiri

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



سوال دانلود (البته برای اعداد زیر 30^2.)// اگه تونستی خود سوال رو حل کنی که خیلی بهتره.

[/center:9d239b79a6]
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
[center:52efb82342]
[/center:52efb82342]
چرا کسی حل نمی کنه؟!

جواب من:

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

int main()
{
    int a,c;
    float b;
    start:
    scanf("%d",&a);
    
    for(b=1;b<100;b++){
		if(pow(2,b)<=a && a<pow(2,b+1)){
		printf("%1.0f\n",pow(2,b));
		goto start;}}
		
    
    getch();
    return 0;
}
 

rezashiri

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


دو تا سوال نسبتا خوب دیگه:​
الف)برنامه ای بنویسید که در ورودی عدد n که کوچکتر از 31^2 است را دریافت کند و بررسی کند چند تا از اعداد دنباله

بر 3 بخشپذیراست؟


ب)برنامه ای بنویسید که پس از دریافت m,n که m>n و سپس جمله n ام و m ام یک تصاعد حسابی ، جمله عمومی دنباله و 20 جمله اول تصاعد را در خروجی چاپ کند.​
[/center:c7dfc471d3]
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
[center:7414c04885]
[/center:7414c04885]
اینم قسمت ب)

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

int main()
{
    int m,n,tm,tn,d,t,a;
    
    printf("please input m:\t");  scanf("%d",&m);
    printf("please input tm:\t");  scanf("%d",&tm);
    printf("please input n:\t");  scanf("%d",&n);
    printf("please input tn:\t");  scanf("%d",&tn);
    
    d=(tm-tn)/(m-n);
    
    t=tm-d*(m-1);
    
    printf("gomle omomi:tx=%d+%d(x-1)\n\n\n",t,d);
    
    for(a=1;a<21;a++)
    printf("%d,",d*(a-1)+t);
    
    getch();
    return 0;
}
 

rezashiri

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



برنامه ای بنویسید که عدد طبیعی Q که کوچکتر از 8^10 می باشد را دریافت کرده و کوچکترین عددی که در سمت راست فاکتوریلش Q تا صفر دارد را معرفی کند.

و اگر چنین عددی وجود نداشت خروجی No solution را چاپ کند.


مثلا برای ورودی 2 ، خروجی 10 و برای ورودی 5 ، خروجی No solution را چاپ کند.[/center:9c1ef47d53]​
 

Goharshady1

New Member
ارسال ها
37
لایک ها
0
امتیاز
0
سلام و ببخشید که با وجود سوال بدون جواب سوال دیگه ای می نویسم.
برنامه ی min heap را بنویسید

خداحافظ
موفق باشید
ضمنا من این همه تلاش آقای شیری را تحسین می کنم
 
بالا