Vavilon (Okružno 2016 SŠ - B2)

Link ka zadatku : https://petlja.org/BubbleBee/r/Problems/2015-okruzno-ss-vavilon
Moj kod

#include <bits/stdc++.h>

using namespace std;

int main()
{
unsigned long long int n,i,b,a,c,j,pr1,con,pr,kona;
unsigned long long int co = 0;
unsigned long long int cc = 0;
con = 0;
cin >> c;
cin >> b;
cin >> n;

a = n;
for (i=1; i<=sqrt(n); i++)
{
if (n%i == 0)
{

        if (n/i == i)
            co = co + 1;

        else 
            co = co + 2;
    }
}

co = co - 1;
n = a;

if(co < c - 1){
cout << 0 << endl;
return 0;
}

pr = co;

while(a < b){
a = a + n;
cc = cc + 1;
}
if(cc < c - 1){
cout << 0 << endl;
return 0;
}
pr1 = cc;

i = co;
for (j = 0;j != c -1;j++){
if(i != co){

    pr = pr * i;
    }
     i --;

}

i = cc;
for (j = 0;j != c -1;j++){
if(i != cc){

    pr1 = pr1 * i;
    }
     i --;

}

kona = (pr * pr1) * 2;

cout << kona << endl;

return 0;

}

Ne znam zbog cega mi kod ne radi.Probao sam da menjam tip podataka int,long int…medjutim ne radi.Unosio sam dosta primera u mom kodu i u kodu mog druga koji radi i isti su nam izlazi.Nigde nisam mogao da nadjem test primere kojima se zadatak testira.
Ako moze neko da mi kaze u cemu je problem u mom kodu?

Test primeri i rešenja komisije, pa se posluži :slight_smile: https://drive.google.com/open?id=1lG9UQBw5lcmSj9cMnFd4FFkjp-pQS466

Ovo mozda nece u potpunosti pomoci ali u zadatku se trazi ostatak pri deljenju tog broja sa 10^9 + 7

Nisam video da koristis mod 10e9+7, a i sqrt(n) nije uvek precizan, bolje koristi for(i*i<=n) … ako je WA problem.

Kada podelis neki broj sa 10 ^9+7 to je taj broj,medjutim i to sam probao ali ostaje isto.Sqrt(n) mora da se koristi inace zadatak ne bi prosao sve bi bilo TLE(vremenso ogranicenje bi bilo predjeno).

Broj koji dobijes kao resenje moze da bude veci od 1000000007 i tada ne smes da ispises taj broj nego ostatak pri deljenju sa 1000000007 (primer: resenje je 1000000008, program tada treba da ispise 1), a cesto moze da se desi i da bude preveliko resenje bez modula, pa da ti program da overflow (zato se, uostalom i trazi resenje po modulu u ovakvim zadacima). Mislio sam inace na petlju for(int i = 0; i*i <= n; ++i){} koja je i dalje slozenosti O(sqrtN). Pogledaj moj kod ako nesto nisam dobro objasnio: https://ideone.com/HFZ5iZ

1 Like