CSES - Aalto Competitive Programming 2024 - wk12 - Wed - Results
Submission details
Task:Rabbits
Sender:bielaltes
Submission time:2024-11-27 17:22:07 +0200
Language:C++ (C++11)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.16 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.16 sdetails
#4ACCEPTED0.16 sdetails
#5ACCEPTED0.16 sdetails
#6ACCEPTED0.16 sdetails
#7ACCEPTED0.17 sdetails
#8ACCEPTED0.16 sdetails
#9ACCEPTED0.16 sdetails
#10ACCEPTED0.16 sdetails
#11ACCEPTED0.17 sdetails
#12ACCEPTED0.17 sdetails
#13ACCEPTED0.18 sdetails
#14ACCEPTED0.16 sdetails
#15ACCEPTED0.17 sdetails
#16ACCEPTED0.16 sdetails
#17ACCEPTED0.16 sdetails
#18ACCEPTED0.17 sdetails
#19ACCEPTED0.16 sdetails
#20ACCEPTED0.17 sdetails
#21ACCEPTED0.16 sdetails
#22ACCEPTED0.18 sdetails
#23ACCEPTED0.16 sdetails

Code

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int compare(string a, string b) {
    if (a.length() < b.length()) return -1;
    if (a.length() > b.length()) return 1;
    return a.compare(b);
}

string fib(int n) {
    if (n <= 0) return "0";
    if (n == 1) return "1";
    
    string a = "0", b = "1";
    for (int i = 2; i <= n; i++) {
        string sum = "";
        int carry = 0;
        int j = a.length() - 1;
        int k = b.length() - 1;
        
        while (k >= 0 || j >= 0 || carry) {
            int x = j >= 0 ? a[j] - '0' : 0;
            int y = k >= 0 ? b[k] - '0' : 0;
            int current = x + y + carry;
            carry = current / 10;
            sum = char(current % 10 + '0') + sum;
            j--; k--;
        }
        
        a = b;
        b = sum;
    }
    return b;
}

int main() {
    string a, b;
    cin >> a >> b;
    
    int count = 0;
    int month = 1;
    string current;
    
    while (true) {
        current = fib(month);
        if (compare(current, b) > 0) break;
        
        if (compare(current, a) >= 0 && compare(current, b) <= 0) {
            count++;
        }
        month++;
    }
    
    cout << count << endl;
    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
1 1000000000000000000000000000...

correct output
480

user output
480

Test 2

Verdict: ACCEPTED

input
1 1

correct output
2

user output
2

Test 3

Verdict: ACCEPTED

input
100000000000000000000000000000...

correct output
0

user output
0

Test 4

Verdict: ACCEPTED

input
708610693340620844512521044951...

correct output
0

user output
0

Test 5

Verdict: ACCEPTED

input
786632967217302919379405189471...

correct output
0

user output
0

Test 6

Verdict: ACCEPTED

input
636957196297222930779072940972...

correct output
0

user output
0

Test 7

Verdict: ACCEPTED

input
114612974378925787282507968062...

correct output
3

user output
3

Test 8

Verdict: ACCEPTED

input
702530369037899946705172780410...

correct output
0

user output
0

Test 9

Verdict: ACCEPTED

input
274453166590443997807512962944...

correct output
0

user output
0

Test 10

Verdict: ACCEPTED

input
855307457139726034048493902602...

correct output
0

user output
0

Test 11

Verdict: ACCEPTED

input
639748223313530085297872188565...

correct output
0

user output
0

Test 12

Verdict: ACCEPTED

input
432993801671766821076571962007...

correct output
1

user output
1

Test 13

Verdict: ACCEPTED

input
879671727283213079665539196480...

correct output
1

user output
1

Test 14

Verdict: ACCEPTED

input
667785392416865594397610159182...

correct output
0

user output
0

Test 15

Verdict: ACCEPTED

input
781364162388340525444583784264...

correct output
1

user output
1

Test 16

Verdict: ACCEPTED

input
655747298541157143247235560738...

correct output
0

user output
0

Test 17

Verdict: ACCEPTED

input
403413620814634912261621439265...

correct output
0

user output
0

Test 18

Verdict: ACCEPTED

input
447646307232291168178477866864...

correct output
1

user output
1

Test 19

Verdict: ACCEPTED

input
295276605018840332007572176705...

correct output
5

user output
5

Test 20

Verdict: ACCEPTED

input
443559664146440701189824727251...

correct output
2

user output
2

Test 21

Verdict: ACCEPTED

input
734298173292503577661407215818...

correct output
0

user output
0

Test 22

Verdict: ACCEPTED

input
864568133527920094870111453259...

correct output
0

user output
0

Test 23

Verdict: ACCEPTED

input
352783378945989078522092015452...

correct output
0

user output
0