Khayyam Challenging Programming Contest

مجموعه مسابقات چالش های برنامه نویسی خیام
مشخصات بلاگ
مسابقات هفتگی خیام

به وبلاگ اطلاع رسانی مسابقات برنامه نویسی دانشگاه خیام خوش آمدید. در این وبلاگ میتوانید از آخرین اخبار مسابقات خیام با خبر شوید.

طبقه بندی موضوعی
جمعه, ۱۳ دی ۱۳۹۲، ۰۸:۱۸ ق.ظ

نتیجه چهارمین مسابقه اینترنتی خیام

نتیجه چهارمین مسابقه اینترنتی خیام

نظرات  (۹)

ضمن تشکر و خسته نباشید به شرکت کنندگان،
خوب همونطور که انتظار می رفت استقبال این هفته کمتر بود، ولی دوستان در جریان باشید که مسابقه رو در حین امتحانات هم هر هفته برگزار میکنیم. و امیدوارم که بچه هایی که در اون ایام امتحان ندارند (یا دارند) در مسابقه های آتی هم شرکت کنند.
۱۳ دی ۹۲ ، ۱۱:۳۷ علی رسولی
منم ضمن خسته نباشید خدمت دوستان گرام
اینجا سورس کد هامو میذارم هرگونه سوال و توضیحی هم اگه هست با کمال میل پاسخ میدم
سوال 10346 این سوال فقط نیاز به پیدا کردن رابطه ریاضیش بود.


#include<stdio.h>
#include <iostream>
using namespace std;
int main()
{
int n,k,sum=0,z,x;
while(cin>>n>>k)
{
z=n;
x=k;
z=z-1;
x=x-1;
sum=z/x;
k=n+sum;
cout<<k<<"\n";
}
return 0;
}


سوال10082 سوالی که خیلی برام وقت گیر شد اما بدونه استفاده از تابعه خاصی نوشتمش :) حدوده 1 ساعت واقعا تایم گرفت تا سورس کدو مشکلاتش رو برطرف کردم اما سواله واقعا خوب و آسونی بود


#include<conio.h>
#include <stdio.h>
using namespace std;
char jomle(char ch) {

  switch (ch) {

  case '1':

    return '`';

  case '2':

    return '1';

  case '3':

   return '2';

 case '4':

    return '3';

  case '5':

   return '4';

  case '6':

    return '5';

  case '7':

   return '6';

  case '8':

    return '7';

  case '9':

   return '8';

  case '0':

    return '9';
  case '-':

   return '0';

  case '=':

    return '-';

  case 'W':

    return 'Q';

  case 'E':

   return 'W';

  case 'R':

    return 'E';
  case 'T':

   return 'R';

 case 'Y':

    return 'T';
  case 'U':

   return 'Y';

  case 'I':

    return 'U';

  case 'O':

    return 'I';

  case 'P':

   return 'O';

 case '[':

    return 'P';

  case ']':

    return '[';

  case '\\':
    return ']';

  case 'S':

  return 'A';

  case 'D':

    return 'S';

  case 'F':

    return 'D';

  case 'G':

    return 'F';

  case 'H':

   return 'G';

  case 'J':

    return 'H';

  case 'K':

    return 'J';
  case 'L':

    return 'K';

  case ';':

    return 'L';

  case '\'':

    return ';';

  case 'X':

    return 'Z';

  case 'C':

    return 'X';

  case 'V':

    return 'C';

  case 'B':

    return 'V';

  case 'N':

    return 'B';
  case 'M':

    return 'N';

  case ',':

    return 'M';

  case '.':

    return ',';

  case '/':

    return '.';

  case ' ':

    return ' ';

  case '\n':

    return '\n';

  }

  return ' ';

}
int main() 
{
  char ch;
  while (scanf("%c", &ch) != EOF) {
   printf("%c", jomle(ch));
  }
  return 0;
}


اینم سوال299 مشابه یکی از سوالات قبلی بود و استفاده از آرایه که فقط خوراکه درس برنامه نویسی پیشرفتست ;)

#include <stdio.h>
#include <iostream>
using namespace std;
int main() 
{
  int x,n,t[50];
  scanf("%d",&x);
  while(x--){
   scanf("%d",&n);
   for(int i=0;i<n;i++){
       scanf("%d",&t[i]);
    }
    int z = 0;
   bool s;
   for(int i=0;i<n;i++){
      s = false;
      for(int j=1;j<n-i;j++){
        if(t[j]<t[j-1]){
          int temp = t[j];
          t[j] = t[j-1];
          t[j-1] = temp;
          z++;
         s = true;
        }
      }
      if(!s) break;
    }
    printf("Optimal train swapping takes %d swaps.\n",z);
  }
  return 0;
}
۱۳ دی ۹۲ ، ۱۱:۴۶ علی رسولی
دوستان فقط اگر میشه سوال اول رو برام سورس کدش رو بذارین ;) دستتون دردنکنه
۱۳ دی ۹۲ ، ۱۳:۳۰ علی رضائی
سوال ۱۰۰۸۲ رو من با آرایه نوشتم که فکر میکنم کمی خلاصه تره و البته سرعت اجراش بهتره

#include <iostream>

using namespace std;
int main()
{
    char c[256];
    c['W']='Q';
    c['S']='A';
    c['X']='Z';
    c['E']='W';
    c['D']='S';
    c['C']='X';
    c['R']='E';
    c['F']='D';
    c['V']='C';
    c['T']='R';
    c['G']='F';
    c['B']='V';
    c['Y']='T';
    c['H']='G';
    c['N']='B';
    c['U']='Y';
    c['J']='H';
    c['M']='N';
    c['I']='U';
    c['K']='J';
    c[',']='M';
    c['O']='I';
    c['L']='K';
    c['.']=',';
    c['P']='O';
    c[';']='L';
    c['/']='.';
    c['[']='P';
    c[']']='[';
    c['\\']=']';
    c['\'']=';';
    c[' ']=' ';
    c['1']='`';
    c['2']='1';
    c['3']='2';
    c['4']='3';
    c['5']='4';
    c['6']='5';
    c['7']='6';
    c['8']='7';
    c['9']='8';
    c['0']='9';
    c['-']='0';
    c['=']='-';
    c[' ']=' ';

    string s;
    while(std::getline(std::cin,s))
    {
        for(int i=0; s[i];i++)
           s[i]=c[s[i]];
        cout << s <<'\n';
    }

}

۱۴ دی ۹۲ ، ۲۰:۳۲ محمد کاردان
سلام. ببخشید در گیر طراحی و پی ال بودم نشد سر بزنم . . .

من سوال 136 با کمی کلک زدن حل کردم.
سه بار کدمو عوض کردم و به نتیجه نرسیم اولش فکر میکردم که باید چک کنیم ببینیم به 2 و 3 و 5 بخشپذیر هست یا نه ولی اگر به دنباله دقت کنید می بینید اگر این طوری بود باید عدد 14 هم تو دنباله بود... بعد حدس بعدیم این بود که شاید باید فقط به 2 و 3 و 5 بخشپذیر باشه و به 7 نباشه ... اما این هم نبود در حقیقت ما باید عامل اول عددو پیدا کنیم و برای این باید مدام تقسیم منیم بر 2 و 3 و 5 تا نتیجه یک بشه اگر یک شد یعنی عامل اول این عدد یکی از این سه عدد هستش...

#include <iostream>
using namespace std;
int main()
{
    long long u=1;
    int th=1;
    while(th<=1500){
	long long tmp=u;
	while (tmp%2==0)tmp/=2;
	while (tmp%3==0)tmp/=3;
	while (tmp%5==0)tmp/=5;
	if(tmp==1)th++;
	u++;
    }
    cout<<"The 1500'th ugly number is "<<u-1<<"."<<endl;
    return 0;
}
اما این کد مرتبه زمانیش خیلی زیاده ... بخاطر همین من یکم کلک زدم و با این کد جواب نهایی رو حساب کردم و فقط جواب نهاییرو فرستادم ... :)))))))

سوال 10082 : کدم تقریبا شبیه کد استاد هست ولی با این تفاوت که من از map استفاده کردم چون همچین راه حل جالبی به ذهنم نرسیده بود که کاراکتر وقتی بذاریم به جای اندیس آرایه تبدیل به عدد صحیح میشه و میشه به عنوان اندیس ازش استفاده کرد...
 سوال 299: آره مشابه بود و از ورودی و خروجی می شد حدس زد که مرتب سازی حبابی هستو باید تعداد جابجایی هارو شمرد...

سوال 10346: ای سوال خیلی جالب و ساده بود ولی من بخاطر اینکه شماره سوالرو اشتباه وارد می کردم رانگ می خوردم وگرنه دفه دوم که سابمیت کردم اکسپت بود ... 

:)
۱۴ دی ۹۲ ، ۲۱:۳۲ علی رضائی
من سوال ۱۳۶ رو فرداش دقیقا با همین روش تو حل کردم، و همین کلک رو زدم :دیــــ

میگم چطوری کدت رو توی یه باکس گذاشتی؟
۱۵ دی ۹۲ ، ۱۲:۵۲ محمد کاردان
تو ادیتور یک آیکن هست به این شکل <> آبی رنگه برای مشاهده کده بزنید کد اچ تی ام ال میتونید بنویسید بعد کداتونو داخل تگ <pre> بنویسید ...
۱۸ دی ۹۲ ، ۲۲:۴۲ علی رسولی
خیلی ممنون محمد جان
نمیدونستم میشه از کلکم استفاده کرد:D
جالب بود واقعا
پاسخ:
خواهش می کنم.
البته این کار من کلک زدن به کسی نبود چون خود صورت سوال طوری بود که می شد یک همچین کاری کرد اصلا فک کنم عمدا اینطوری طرحش کرده بودن تا سوال حل بشه وگرنه فک نمیکنم الگوریتمی پیدا بشه که مرتبه زمانیش اونقدر کم بشه که تو کمتراز 3 ثانیه به جواب برسه و یا اگر هم همچین الگوریتمی باشه احتمالا خیلی سختو پیچیدست ...
این سوال 10082 همون سوال بچه های مبانی نیست ؟

تو مسابقات ای سی ام راه حل های مختلفی ممکنه وجود داشته باشه که حالا شاید از نظر سرعت زیاد متفاوت نباشن اما از نظر تایپ شاید کمی متفاوت باشه

مثلا همین سوال 10082 رو یه رشته بگیرید مقدار اولیه رو تمام حروف رو  پشت سر هم بزارید  به ترتیب مثلا




string s = "A SDFG......"

حالا کافیه بگیم یه سرچ بزنه پیدا  کرد خونه قبلش رو چاپ کنه فقط یه شرط هم میخواد که اگه  اسپیس یا A  یا Q یا  Z  بود خودش رو بزنه

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی