C/C++

King B

Bears. Beets. Battlestar Galactica.
Член од
24 јануари 2011
Мислења
1.801
Поени од реакции
4.076
Киро и Ацо со цел да извежбаат собирање ја играат следнава игра. Едниот од нив задава три цели броја (a, b и c). Задачата на другиот е преку конечен број на дозволени чекори со дозволени операции да стигне од броевите a и b до бројот c. Во секој чекор дозволени се следниве две операции, на бројот а да се додаде бројот b или на бројот b да се додаде бројот a. Проблемот со кој се соочуваат во секоја игра е дали воопшто може да се стигне до бројот c само со овие операции!
Input
Во еден ред се дадени три цели броја a, b и с. (0 ≤ а, b, c ≤ 1018)
Output
Во една линија се печати YES ако може да се стигне до бројот с или ако не може да се стигне се печати NO.
Constraints
Time limit: 3 секунди
Memory limit: 64 мегабајти
Ова ми звучи као рекурзија.. Во кој програмски јазик работиш?
 
Член од
28 јуни 2009
Мислења
294
Поени од реакции
263
Киро и Ацо со цел да извежбаат собирање ја играат следнава игра. Едниот од нив задава три цели броја (a, b и c). Задачата на другиот е преку конечен број на дозволени чекори со дозволени операции да стигне од броевите a и b до бројот c. Во секој чекор дозволени се следниве две операции, на бројот а да се додаде бројот b или на бројот b да се додаде бројот a. Проблемот со кој се соочуваат во секоја игра е дали воопшто може да се стигне до бројот c само со овие операции!
Input
Во еден ред се дадени три цели броја a, b и с. (0 ≤ а, b, c ≤ 1018)
Output
Во една линија се печати YES ако може да се стигне до бројот с или ако не може да се стигне се печати NO.
Constraints
Time limit: 3 секунди
Memory limit: 64 мегабајти
Имаш некои идеi или код кај што си пробал да го решиш?
 
M

Mr.InF3ction

Гостин
Мислам дека ова е ок:
PHP:
// C# код, мали промени треба за да работи со C/C++
static void Main(string[] args)
        {
            bool test = solve(7,1, 1018);
            Console.WriteLine(test);
            Console.ReadLine();
        }

        static bool solve(int a, int b, int c)
        {
            if (c == a || c == b)
            {
                return true;
            }
            if (a > c || b > c)
            {
                return false;
            }

            return solve(a + b, b, c) || solve(a, b + a, c);
        }
Инаку за рекурзија, прво нешто што треба да направиш е да одредиш граници, кога знаеш дека има решение и нема. Потоа текстот вика дека може да се користат 2 операции само, што значи дека во дрвото што ќе се генерира ќе има 2 иницијални деца, првото е ако се случи операцијата "a +b" за А и вториот случај е "b+a" за B..што јасно се гледа од кодот.
 
Член од
19 март 2011
Мислења
55
Поени од реакции
12
Програмери ќе може ли некој да ми напише програма во која ќе се најдат парните броеви од 10 до 20 и збирот на тие броеви да изнесува 45 ..некако збуни ме оваа..благодарам однапред
 
Член од
14 јануари 2008
Мислења
4.251
Поени од реакции
909
Програмери ќе може ли некој да ми напише програма во која ќе се најдат парните броеви од 10 до 20 и збирот на тие броеви да изнесува 45 ..некако збуни ме оваа..благодарам однапред
Нема логика задачава. Збир на парни броеви НЕМОЖЕ да биде непарен број.
 
Член од
19 март 2011
Мислења
55
Поени од реакции
12
па така ми кажаа дека денеска имало на испит чудам се и јас како е можно пак ќе се распрашам ...
 
Член од
5 август 2009
Мислења
1.295
Поени од реакции
484
лесна е задачата, еден ред echo 'нема резултати' :)

Шала на страна, ако нешто нема резултат, незначи дека неможе да се реши преку код. Фино луп и проверка на парност на збировите и на крај, да ќе нема резултати ама ќе има напишан точен програмски код.
 
Член од
1 јуни 2011
Мислења
25.921
Поени од реакции
41.893
Наоѓаш парни броеви од 10-20 и нивен збир. После дали збирот е 45 или различно од тој број. На крај ќе печати дека збирот не е 45.
 
Член од
25 јуни 2013
Мислења
594
Поени од реакции
251
кога собериш збиро на парните броеви(10+12+14+16+18+20) испагја 90
да не е имало на крајот и збирот подели го со 2?
90/2 = 45
 
Член од
19 мај 2014
Мислења
140
Поени од реакции
59
Имам проблем со една задача за програмирање од acm.timus.ru.

http://acm.timus.ru/problem.aspx?space=1&num=1093

Еве го мојот код:
Код:
#include <iostream>
#include <cmath>

using namespace std;

struct vector
{
    double x;
    double y;
    double z;
};


double dist(vector a, vector b)
{
    double d = sqrt(pow(b.x - a.x, 2) + pow(b.y - a.y, 2) + pow(b.z - a.z, 2));
    return d;
}

double find_d(vector v_normal, vector point)
{
    double minus_d = v_normal.x*point.x + v_normal.y * point.y + v_normal.z * point.z;
    return -minus_d;
}

int main(int argc, char * argv[])
{
    vector C, N, S, V;
    double R;
    cin >> C.x >> C.y >> C.z;
    cin >> N.x >> N.y >> N.z;
    cin >> R;
    cin >> S.x >> S.y >> S.z;
    cin >> V.x >> V.y >> V.z;
    double t1, t2;
    double D = find_d(N, C);

    t1 = (double)(N.x * V.x + N.y * V.y + N.z * V.z - sqrt(20 * N.z * (D + N.x * S.x + N.y * S.y + N.z * S.z) + pow(N.x*V.x+N.y*V.y + N.z*V.z, 2))) / (double)(10.0*N.z);
    t2 = (double)(N.x * V.x + N.y * V.y + N.z * V.z + sqrt(20 * N.z * (D + N.x * S.x + N.y * S.y + N.z * S.z) + pow(N.x*V.x + N.y*V.y + N.z*V.z, 2))) / (double)(10.0 * N.z);

    vector hit1, hit2;
    hit1.x = S.x + t1*V.x;
    hit1.y = S.y + t1*V.y;
    hit1.z = S.z + t1*V.z - 5*t1*t1;

    hit2.x = S.x + t2*V.x;
    hit2.y = S.y + t2*V.y;
    hit2.z = S.z + t2*V.z - 5 * t2*t2;

    if (t1 >= 0)
    {
        if (dist(hit1, C) <= R)
        {
            cout << "HIT";
            return 0;
        }
    }

    if (t2 >= 0)
    {
        if (dist(hit2, C) <= R)
        {
            cout << "HIT";
            return 0;
        }
    }
    cout << "MISSED";
    return 0;
}
 
Член од
21 април 2013
Мислења
20
Поени од реакции
5
Ќе може да ми помогнете со овие 2 задачи, навистина не ги разбирам покажувачите а камо ли да решавам задачи .. :(:(
1. Да се направи програма која брои од 0 до 9 и ги печати броевите на екран. Да се отпечатат броевите користејќи покажувачи .
2.да се направи програма која чита низа и бара интервал. Ако најде таков го печати остатокот од низата.
 
Член од
4 септември 2010
Мислења
1.002
Поени од реакции
582
Ќе може да ми помогнете со овие 2 задачи, навистина не ги разбирам покажувачите а камо ли да решавам задачи .. :(:(
1. Да се направи програма која брои од 0 до 9 и ги печати броевите на екран. Да се отпечатат броевите користејќи покажувачи .
2.да се направи програма која чита низа и бара интервал. Ако најде таков го печати остатокот од низата.
Од на училиште се задачиве?
 
Член од
4 септември 2010
Мислења
1.002
Поени од реакции
582
1.
Код:
#include <iostream>

using namespace std;

int main()
{
    int i; //deklariranje brojac
    int *p; //deklariranje pokazuvac
    p=&i; //p dobiva adresa od i bidejki p e pokazuvac
    for(i=0;i<10;i++){ //for ciklus za vrtenje od 0 do 9
        cout<<*p<<endl;
    }
    return 0;
}
А втората не ја сфаќам(не е убаво објаснета)
 

Kajgana Shop

На врв Bottom