Loading...
kr056 avatar kr056 64 Точки

Coding 101 Exam - 24 April 2016 06. Специални числа Java

Проблема е следния,опитвам се да реша задачата с for цикли,направих 6,7 теста и 2 минаха,на другите обаче ми дава 90/100 и на последния тест времето преминава лимита

Код:

https://pastebin.com/TVGLRkru

Тагове:
0
Programming Basics 02/05/2017 13:41:34
DilyanaGeorgieva avatar DilyanaGeorgieva 81 Точки

Първо и аз така пробвах и стигнах до този лимит, който се минава.

После една приятелка ми помогна с идея за друг начин.

https://pastebin.com/wCgicBjs

0
02/05/2017 15:44:04
shegi avatar shegi 1 Точки

Правилно си решил задачата, пробвай няколко последователни пъти да си въведеш решението и ще ти даде 100 точки. Проблемът тук е че тези задачи са правени за C# и затова е възможно за Java да не ти даде 100 точки. Упех !

0
MartinBG avatar MartinBG 4803 Точки

Както са отбелязали и колегите преди мен, решението ти е коректно (всъщност, съвпада на 100% като логика и реализация с моето отпреди някококо месеца), а проблемът идва от стегнатите тайминги в Judge за тази задача, които е лесно да бъдат прескочени с Java решение.

Най-бавната операция в тази задача е принтването на резултата към конзолата. За късмет, в Java разполагаме със StringBuilder, който е доста по-бърз при работа със стрингове и може да бъде използван като буфер за всички резултати, който да бъде изпратен наведнъж към конзолта след вложените цикли.

Пиши, ако имаш проблем с използването му в тази задача, и ще ти помогна с кода.

 

Успех!

0
02/05/2017 16:53:48
MartinBG avatar MartinBG 4803 Точки

Ето решението на задачата със StringBuilder: link

На последния тест е около 4 пъти по-бърза от стандартното решение (~0.025s срещу ~0.100s) в Judge.

0
minito99 avatar minito99 23 Точки

Ето и задачата с един for цикъл 100/100 минава и изисква много по-малко време за да мине :)

 

package Demo;

import java.util.Scanner;

/**
 * Created by Minito on 5/6/2017.
 */
public class DemoSpecialNums {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        int n = Integer.parseInt(console.nextLine());

        for (int i = 1111; i < 9999; i++) {

            int firstNum = i / 1000;
            int secondNum = (i / 100) % 10;
            int thirdNum = (i / 10) % 10;
            int lastNum = i % 10;
            if (firstNum != 0 && secondNum != 0 && thirdNum != 0 && lastNum != 0) {
                if (n % firstNum == 0 && n % secondNum == 0 && n % thirdNum == 0 && n % lastNum == 0) {
                    System.out.print("" + i + " " );
                }
            }

        }
    }
}

0
06/05/2017 15:46:37
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.