QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#708851#2933. Sequinary Numeralssefnuray#AC ✓0ms3828kbC++142.1kb2024-11-04 08:36:322024-11-04 08:36:32

Judging History

你现在查看的是最新测评结果

  • [2024-11-04 08:36:32]
  • 评测
  • 测评结果:AC
  • 用时:0ms
  • 内存:3828kb
  • [2024-11-04 08:36:32]
  • 提交

answer

#include <iostream>
#include <algorithm>
#include <bitset>
#include <vector>
#include <cmath>
#include <string>
#include <set>
#include <map>
#include <unordered_map>
#include <sstream>
#include <iomanip>
#include <stdexcept>
#include <utility>
#include <deque>
using namespace std;
typedef long long ll;
typedef long double ld;
#define MOD 1000007

ll gcd (int a, int b) {
    return b ? gcd (b, a % b) : a;
}

void FastDoubling (ll n, ll res[]) {
    ll a, b, c, d;
    // Base Condition
    if (n == 0) {
        res[0] = 0;
        res[1] = 1;
        return;
    }
    FastDoubling((n / 2), res);
 
    // Here a = F(n)
    a = res[0];
 
    // Here b = F(n+1)
    b = res[1];
 
    c = 2 * b - a;
 
    if (c < 0)
        c += MOD;
 
    // As F(2n) = F(n)[2F(n+1) – F(n)]
    // Here c  = F(2n)
    c = (a * c) % MOD;
 
    // As F(2n + 1) = F(n)^2 + F(n+1)^2
    // Here d = F(2n + 1)
    d = (a * a + b * b) % MOD;
 
    // Check if N is odd
    // or even
    if (n % 2 == 0) {
        res[0] = c;
        res[1] = d;
    }
    else {
        res[0] = d;
        res[1] = c + d;
    }
}
int main()
{
    // these first two lines speed up input / output significantly
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    string seq;

    cin >> seq;

    if (seq.size() != 0)
    {
        int denPow = seq.size() - 1;

        ll num = 0;
        // ll den = pow(2, denPow);

        ll den = 1 << denPow;
        ll pow3 = 1;
        ll pow2 = den;

        for (int i = 0; i < seq.size(); i++)
        {
            int d = (seq[denPow - i] - '0');
            // num += d * (pow(3, i)) * (pow(2, denPow - i));
            num += d * pow3 * pow2;
            pow3 *= 3;
            pow2 /= 2;
        }

        ll whole = num / den;
        num = num % den;

        if (num != 0)
        {
            ll divis = gcd(num, den);
            num /= divis;
            den /= divis;
            cout << whole << " " << num << "/" << den;
        }
        else
        {
            cout << whole;
        }
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3540kb

input:

2101

output:

10

result:

ok single line: '10'

Test #2:

score: 0
Accepted
time: 0ms
memory: 3524kb

input:

201

output:

5 1/2

result:

ok single line: '5 1/2'

Test #3:

score: 0
Accepted
time: 0ms
memory: 3828kb

input:

2010211122112221202012

output:

16541 873801/1048576

result:

ok single line: '16541 873801/1048576'

Test #4:

score: 0
Accepted
time: 0ms
memory: 3612kb

input:

22222222222222222222222222222222

output:

1725755 572407425/1073741824

result:

ok single line: '1725755 572407425/1073741824'

Test #5:

score: 0
Accepted
time: 0ms
memory: 3480kb

input:

11111111111111111111111111111111

output:

862877 1646149249/2147483648

result:

ok single line: '862877 1646149249/2147483648'

Test #6:

score: 0
Accepted
time: 0ms
memory: 3828kb

input:

10000000000000000000000000000000

output:

287626 1264544299/2147483648

result:

ok single line: '287626 1264544299/2147483648'

Test #7:

score: 0
Accepted
time: 0ms
memory: 3532kb

input:

1

output:

1

result:

ok single line: '1'

Test #8:

score: 0
Accepted
time: 0ms
memory: 3776kb

input:

2

output:

2

result:

ok single line: '2'

Test #9:

score: 0
Accepted
time: 0ms
memory: 3476kb

input:

10

output:

1 1/2

result:

ok single line: '1 1/2'

Test #10:

score: 0
Accepted
time: 0ms
memory: 3824kb

input:

11

output:

2 1/2

result:

ok single line: '2 1/2'

Test #11:

score: 0
Accepted
time: 0ms
memory: 3540kb

input:

12

output:

3 1/2

result:

ok single line: '3 1/2'

Test #12:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

20

output:

3

result:

ok single line: '3'

Test #13:

score: 0
Accepted
time: 0ms
memory: 3524kb

input:

21

output:

4

result:

ok single line: '4'

Test #14:

score: 0
Accepted
time: 0ms
memory: 3480kb

input:

22

output:

5

result:

ok single line: '5'

Test #15:

score: 0
Accepted
time: 0ms
memory: 3828kb

input:

201000101020120002210001022

output:

99539 7418955/33554432

result:

ok single line: '99539 7418955/33554432'

Test #16:

score: 0
Accepted
time: 0ms
memory: 3624kb

input:

21012020111221210112111012122211

output:

1056241 54451731/134217728

result:

ok single line: '1056241 54451731/134217728'

Test #17:

score: 0
Accepted
time: 0ms
memory: 3808kb

input:

121200

output:

25 19/32

result:

ok single line: '25 19/32'

Test #18:

score: 0
Accepted
time: 0ms
memory: 3812kb

input:

22010

output:

18 3/8

result:

ok single line: '18 3/8'

Test #19:

score: 0
Accepted
time: 0ms
memory: 3812kb

input:

1102121021020020112221202220100

output:

565301 930420511/1073741824

result:

ok single line: '565301 930420511/1073741824'

Test #20:

score: 0
Accepted
time: 0ms
memory: 3532kb

input:

1022020000221011110121211

output:

47476 16343961/16777216

result:

ok single line: '47476 16343961/16777216'

Test #21:

score: 0
Accepted
time: 0ms
memory: 3812kb

input:

21100210121101

output:

698 349/2048

result:

ok single line: '698 349/2048'

Test #22:

score: 0
Accepted
time: 0ms
memory: 3524kb

input:

122110002

output:

97 61/256

result:

ok single line: '97 61/256'

Test #23:

score: 0
Accepted
time: 0ms
memory: 3528kb

input:

200200011120110

output:

806 6545/8192

result:

ok single line: '806 6545/8192'

Test #24:

score: 0
Accepted
time: 0ms
memory: 3584kb

input:

212020012222220200010110012112

output:

540506 7899177/8388608

result:

ok single line: '540506 7899177/8388608'

Test #25:

score: 0
Accepted
time: 0ms
memory: 3596kb

input:

21201001011

output:

222 19/64

result:

ok single line: '222 19/64'