| نويسنده |
پيغام |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
 بررسی سوالات ACM_ICPC ( فعلا شریف 2001)
سلام
ان شاءالله می خوایم اینجا هر چند وقت یه بار ( حدودا یه هفته ) سوالاتی مطرح کنیم و به حل کردن اونها بپردازیم.
اول هاش رو نگاه نکنین ! آخراش سخت میشه
از سال 99 سوال B و از سال 2000 سوال های G , H حل نشده باقی موندن .
این پست آخرین بار توسط ملایی ویرایش شده است در تاریخ 3 شنبه Dec 18, 2007 12:59 am. در مجموع این پست 3 بار ویرایش شده است.
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 15 Nov 2006 04:13 pm |
|
 |
|
|
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
سلام
جوابی که من برای این قسمت در نظر گرفتم اینه
اگر اشکالی داشت حتما بگین
اگر با visual کار می کنین باید stdio.h و stdlib.h رو بزارین و اگر با borland c کار می کنید باید تمام h. ها رو بزارین و using namespace std رو پاک کنید
code:#include <fstream>
#include <stdio>
#include <stdlib>
#include <iostream>
using namespace std;
int main(){
ifstream in("testb.txt");
if (!in)
cout<<"error";
char h[3],m[3],s[3];
short int t; long int seconds,x1,x2; float f,ans;
for (in>>t;t>0;--t){
in >> f;
in.getline(h,10,':');
seconds=x1=x2=0;
seconds+=atoi(h)*3600;
in.getline(m,10,':');
seconds+=atoi(m)*60;
in>>s;
seconds+=atoi(s);
if (seconds){
for (register long int i=1; ;++i){
x1+=f*3600; x2+=f*3600+seconds;
if (x1>43200)
x1=x1%43200;
if (x2>43200)
x2=x2%43200;
if (x1==x2){
ans=i*f/24;
printf("%.3f\n",ans);
break;
}
}//for
}//if
else
cout<<"0.000"<<endl;
}//for
return 0;
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 23 Nov 2006 01:29 pm |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
امید وارم مفید بوده باشه اگه کسی در مورد جواب نظری یا سوالی داره بگه.
سوال بعدی :
به کمک پشته برنامه ای بنویسید که رشته ای را از ورودی بگیرد و مشخص کند آیا متقارن هست یا نه؟
جوابی من در نظر گرفتم به کمک لیست پیوندیه اگه کسی با آرایه بنویسه میتونه به اسم خودش اینجا بزاره.
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 02 Dec 2006 05:46 pm |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
کسی نظری نداره؟
ان شاءالله فردا شب جواب رو به همراه یه سوال جدید می زارم
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 05 Dec 2006 02:55 am |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
اینم جواب:
code:#include "iostream"
#include "fstream"
using namespace std;
struct node {
char data;
node *next;
};
class linklist {
node *start;
node *top;
public:
linklist(){start=top=NULL;}
void push(char x);
char pop();
};
void linklist::push(char x){
node *p=new node;
p->data=x;
if (!top) {
top=p;
top->next=NULL;
}
else {
p->next=top;
top=p;
}
}
char linklist::pop(){
if (!top)
cerr<<"stack is empty";
else {
int x=top->data;
node *p=top;
top=top->next;
free (p);
return x;
}
return 0;
}
int main(){
char a[30],b[30],ch;
linklist f;
gets(a);
int i=0;
ch=a[i];
while (ch!=NULL){
f.push(ch);
++i;
ch=a[i];
}
int j=0;
while (j<i){
b[j]=f.pop();
++j;
}
b[j]=NULL;
if (strcmp(a,b)==0)
cout<<"motagharen an";
else
cout<<"nistan";
return 0;
}
حالا یه سوال نسبتا ساده:
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 05 Dec 2006 07:52 pm |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
این سوال واقعا راحت بود فقط کافیه یه آرایه بگیریم که بهتره پویا باشه.
در مورد آرایه های پویا در تاپیک " یه دوره برنامه نویسی" توضیح داده شد.
حالا سوال بعد:
بهتون توصیه می کنم صورت سوال رو خوب بخونین . سوال لذت بخشیه !
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 13 Dec 2006 01:28 am |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
جالب بود نه؟
code:#include "iostream.h"
#include "conio.h"
#include "stdio.h"
void main() {
FILE *fp;
fp=fopen("d.in","rb");
int r,c,t,i,j,cnt=0;
fscanf(fp,"%d",&t);
for (int k=1;k<t>=1;--i)
for (j=c;j>=1;--j)
if (i!=j)
cnt+=(r-i+1)*(c-j+1);
}
cout<<cnt;
getch();
fclose(fp);
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 22 Dec 2006 07:15 pm |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
برنامه ی قبلی یه اشکال داره که من انتظار داشتم تا حالا یکی اشاره کنه.
من این جواب رو تصحیح نمی کنم.
سوال بعد:
برنامه ای بنویسید که دو چند جمله ای با دو متغیر را با هم جمع کند.
ورودی از یک فایل به این صورت است:
خط اول تعداد جملات چند جمله ای اول
خط دوم ضریب توان x و توان y برای هر کدام از جملات
خط سوم تعداد جملات چند جمله ای دوم
خط چهارم ضریب توان x و توان y برای هر کدام از جملات
مثلا:
code:2
1 2 3 4 5 1
3
2 5 1 0 2 3 1 0 1
تمام اعداد ورودی بزگتر مساوی با صفر اند.
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 01 Jan 2007 08:39 pm |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
این سوال یه جورایی به سوال 2 میان ترم خانم حلمی مربوطه.
code:#include <iostream>
#include <fstream>
using namespace std;
struct node{
int c,x,y;
node *link;
};
class list{
public:
node *start;
void addnode(int,int,int);
list add(list b);
list(){start=NULL;}
node* del(list,node*);
void print();
};
void list::addnode (int cc,int xx,int yy){
node *p=new node;
p->c=cc; p->x=xx; p->y=yy;
node *q=start;
if (!start){
start=p; start->link=NULL;}
else {
while (q->link)
q=q->link;
q->link=p;
p->link=NULL;
}
}
void list::print(){
node *q=start;
int a;
while (q){
a=0;
while (!q->c){
q=q->link; a=1;
}
if (a==1) continue;
if (q->c!=1)
cout<<q>c;
if (q->x==1)
cout<<"x";
else if (q->x!=0)
cout<<"x^"<<q>x;
if (q->y==1)
cout<<"y";
else if (q->y!=0)
cout<<"y^"<<q>y;
cout<<q>link;
}
printf("\b \n");
}
list list::add(list b){
list ans;
node *q=start;
node *p;
while (q) {
int co=0;
co=q->c;
p=b.start;
while (p) {
int a=0;
if ( p->x==q->x && p->y==q->y ) {
co+=p->c;
if (p==b.start){//az in if ta
b.start=b.start->link;
free(p);
p=b.start;
}
else //in else bayad too tabe del bashe yani bayad az inja pak beshe
p=del(b,p);
a=1;
}
if (!a)
p=p->link;
}
ans.addnode (co,q->x,q->y);
q=q->link;
}
p=b.start;
while (p) {
ans.addnode(p->c,p->x,p->y);
p=p->link;
}
return ans;
}
node * list::del(list b,node * p){
/*if (p==b.start){
b.start=p->link;//inja vaghti dasture free(p);
free(p);
return b.start;}*/ //ro bezarim bad az kharej shodan az
node *q=b.start;//tabe b.start=p; ro az tarafe khodesh
while (q->link!=p)//ejra mikone!! bayad chi kar konam?
q=q->link;
q->link=p->link;
free(p);
return q->link;
}
int main(){
list a,b,ans;
int cc,xx,yy,n;
ifstream in("rajabiyun.txt");
if (!in)
cerr<<"error";
in >> n;
while (n--){
in>>cc>>xx>>yy;
a.addnode(cc,xx,yy);
}
in >> n;
while (n--){
in>>cc>>xx>>yy;
b.addnode(cc,xx,yy);
}
cout<<"f(x,y)= "; a.print();
cout<<"g(x,y)= "; b.print();
ans=a.add(b);
cout<<"sum of them= "; ans.print();
return 0;
}
سوال بعدی که دارم روش کار می کنم mazing اٍ . فعلا مشکل داره ولی انشاءالله بزودی اونم می زارم.
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 06 Jan 2007 01:24 am |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
فعلا یه سوال داشته باشین تا ببینم این mazing رو چی کارش میشه کرد.
برنامه ای بنویسید که دو ماتریس اسپارس را از فایل بگیرد و حاصلضرب آنها( یا جمع) را نمایش بده (یا تو فایل بریزه)
اینم فردا پس فردا میزارم چون احتمالا واسه پایان ترم به درد می خوره.
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 07 Jan 2007 10:09 am |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
این دفعه به طور کامل با borland c یا turbo c می تونید اجرا کنید:
code:#include "fstream.h"
#include "iostream.h"
ifstream in("multsp~1.in");
short int max;
struct term{
int raw,col;
float data;
};
class sparse{
public:
term *list;
sparse();
void read();
void print();
sparse mult(sparse);
};
int main(){
if (!in)
cout<<"error";
in>>max;
sparse a,b,c;
a.read();
b.read();
if (a.list[0].col==b.list[0].raw){
c=a.mult(b);
c.print();
}
else
cout<<"zarb nemishan";
return 0;
}
void sparse::sparse(){
list = new term[max];
}
void sparse::read() {
in>>list[0].raw>>list[0].col>>list[0].data;
for (int i=1;i<int>>list[i].raw>>list[i].col>>list[i].data;
}
sparse sparse::mult(sparse b) { //har kodoom az moaleefe haye matrise avval
int flag,cnt=0; //ke col = satre matris dovvom bashe zarb mishe
register int i; //va agar hamchin satri(az avvali) va sotooni(az dovoomi) dar c bashe behesh ezafe
sparse c; //mishe va gar na ye satre jadid dar c bevojood miyad.
c.list[0].raw=list[0].raw;
c.list[0].col=b.list[0].col;
c.list[0].data=cnt;
for ( i=1 ;i<=list[0].data;++i)
for (register j=1;j<=b.list[0].data;++j){
flag=1;
if (list[i].col==b.list[j].raw){
for ( register k=1; k<=cnt ; ++k)
if (list[i].raw==c.list[k].raw && b.list[j].col==c.list[k].col){
flag=0;
c.list[k].data+=list[i].data*b.list[j].data;
}
if (flag){
++cnt;
c.list[cnt].raw=list[i].raw;
c.list[cnt].col=b.list[j].col;
c.list[cnt].data=list[i].data*b.list[j].data;
}
}
}
return c;
}
void sparse::print(){
int k=1;
for (register int i=0;i<list[0].raw;++i){
for (register int j=0;j<list[0].col;++j)
if (list[k].raw==i && list[k].col==j){
cout.width(5);
cout<<list[k].data;
++k;
}
else {
cout.width(5);
cout<<"0";
}
cout<<endl;
}
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 09 Jan 2007 04:02 pm |
|
 |
|
|