نمایش نتایج 1 تا 3 از 3

نام تاپیک: کمک در بهینه کردن برنامه ای که عدد چهار رقمی که جمع رقم های a+d = b+c برابر باشد

  1. #1

    کمک در بهینه کردن برنامه ای که عدد چهار رقمی که جمع رقم های a+d = b+c برابر باشد

    سلام من برای حل مسئله زیر کدی رو نوشتم که میدونم با این که جواب رو درست پاسخ میده ولی بهینه نیست کمکم کنید تا بهینش کنم
    چاپ اعداد چهاررقمی که جمع رقم اول با رقم چهارم مساوی جمع رقم دوم و سوم باشد (a+d = b+c)

    for (int i = 1000; i <= 9999; i++) {
    int buffer = 0, result = 0, conter = 0, a = 0, b = 0;

    while (conter < 5) {
    conter++;
    result = buffer % 10;
    buffer /= 10 ;

    if (conter == 1 || conter == 4) {
    a = a + result;
    }
    if (conter == 2 || conter == 3) {
    b = b + result;
    }

    if ( a == b && conter == 4) {
    result = 0;
    System.out.println(" عدد: " + i);
    }
    }
    }

  2. #2

    نقل قول: کمک در بهینه کردن برنامه ای که عدد چهار رقمی که جمع رقم های a+d = b+c برابر باشد

    یه تلاش دیگه زدم به نظرتون از این بهترم میشه لطفا اگه میشه کمکم کنید

    for (int i = 1000; i <= 9999; i++) {
    int c = 0, d = 0, a = 0, b = 0;
    a = i % 10;
    b = (i-a) % 100 / 10;
    c = (i-a-b) % 1000 / 100;
    d = (i-a-b-c) % 10000 / 1000;

    a += d;
    b += c;
    if (a == b){
    System.out.println(" عدد: " + i);
    }
    }

  3. #3
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: کمک در بهینه کردن برنامه ای که عدد چهار رقمی که جمع رقم های a+d = b+c برابر باشد

    یکسری عملیات اضافه داره که میتونید تصحیحش کردم و البته زمانش رو هم میتونید تست کنید. تصحیح ها: هیچ کدوم از تفریق ها لازم نیست چون عملیات عدد صحیحه و همچنین برای d نیازی به باقی مونده گرفتن نداره.
    برای اینکه چاپ اسکرین تاثیر نداشته باشه هم کامنت کردم. هر چند اینقدر نباید رو بهینه بودن حساس بود در چند تا جمع و تفریق. با این حال:
        public static void main(String[] args) {        long ft, et;
    int c = 0, d = 0, a = 0, b = 0;
    for (int test = 0; test < 10; test++) {
    ft = System.nanoTime();
    for (int i = 1000; i <= 9999; i++) {
    a = i % 10;
    b = i % 100 / 10;
    c = i % 1000 / 100;
    d = i / 1000;


    a += d;
    b += c;
    if (a == b) {
    //System.out.println(i);
    }
    }
    et = System.nanoTime();
    System.out.println("Execution time (1): " + (et - ft) + " ns");
    ft = System.nanoTime();
    for (int i = 1000; i <= 9999; i++) {


    a = i % 10;
    b = (i - a) % 100 / 10;
    c = (i - a - b) % 1000 / 100;
    d = (i - a - b - c) % 10000 / 1000;


    a += d;
    b += c;
    if (a == b) {
    //System.out.println(" عدد: " + i);
    }
    }
    et = System.nanoTime();
    System.out.println("Execution time (2): " + (et - ft) + " ns");
    }
    }

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •