UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#214807#2684. Digit SumN019ms1256kbC++111.6kb2024-11-21 22:02:242024-11-22 09:36:47

answer

//
//  na 2684-re.cpp
//  Competitive Programming
//
//  Created by m2 on 2024/11/21.
//

#include <stdio.h>
#include <iostream>
using namespace std;
typedef long long int ll;
ll x, n;
inline ll ds(ll base){
    ll res = 0, reg = x;
    while(reg){
        res += reg % base;
        reg /= base;
    }
//    cerr << "ds-" << base << " -> " << res << endl;
    return res;
}
inline ll solve(){
    cin >> x >> n;
    {
        ll s = 0;
        for(ll i = 0; i < 61; ++i)
            s += (x >> i) & 1;
        if(s == n)
            return 2;
//        cerr << "NOT BINARY" << endl;
    }
    if(n == x)
        return x + 1;
    ll lim = x, lt, rt, mid, res = -1, base, slope, dst;
    while(lim > 2){
//        cerr << "test" << lim << endl;
        base = ds(lim);
        if(base == n)
            res = lim;
        slope = ds(lim - 1) - ds(lim);
        if(slope <= 0){
            --lim;
            continue;
        }
        lt = 1; rt = lim - 1;
        while(lt < rt - 1){
            mid = (lt + rt) >> 1;
            if(ds(mid) == base + slope * (lim - mid))
                rt = mid;
            else
                lt = mid;
        }
//        cerr << "found interval: " << lt << " -> " << lim << endl;
        if(base <= n && (n - base) % slope == 0){
            dst = lim - (n - base) / slope;
            if(dst >= rt)
                res = min(res, dst);
        }
        lim = rt - 1;
    }
    return res;
}
int main(){
    cin.tie(0)->sync_with_stdio(false);
    int t;
    cin >> t;
    while(t--)
        cout << solve() << endl;
    return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 1256kb

input:

10
888625 163964
35930 5139
531439 147185
749555 345722
69047 16611
55833 9203
307717 106246
933880 ...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1

result:

wrong answer 1st lines differ - expected: '724662', found: '-1'

Test #2:

score: 0
Wrong Answer
time: 4ms
memory: 1252kb

input:

10
450817 145239
822536 101101
234226 52339
995924 105895
378034 2945
639602 284931
147612 44381
253...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1

result:

wrong answer 1st lines differ - expected: '152790', found: '-1'

Test #3:

score: 0
Wrong Answer
time: 3ms
memory: 1256kb

input:

10
23798 4780
503642 62007
363324 80713
37004 7817
540153 82969
199281 32442
520499 159495
447250 37...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1

result:

wrong answer 1st lines differ - expected: '9510', found: '-1'

Test #4:

score: 0
Wrong Answer
time: 4ms
memory: 1256kb

input:

10
537103 140173
203204 73349
296269 133080
483130 200096
305554 36152
209507 29381
957094 13012
740...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1

result:

wrong answer 1st lines differ - expected: '198466', found: '-1'

Test #5:

score: 0
Wrong Answer
time: 3ms
memory: 1252kb

input:

10
87451 9578
905581 255725
521449 257855
748415 342780
5617 1359
452858 52144
822082 373556
389173 ...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1

result:

wrong answer 1st lines differ - expected: '77874', found: '-1'

Test #6:

score: 0
Wrong Answer
time: 5ms
memory: 1252kb

input:

10
947539 24439
567949 142999
783681 16340
770799 241043
997443 117394
907957 61046
76708 8506
42448...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1

result:

wrong answer 1st lines differ - expected: '27151', found: '-1'

Test #7:

score: 0
Time Limit Exceeded

input:

10
38842382408 122926
58274862930 789360
16726511292 330607
15668542016 1208760580
96592451354 75808...

output:

449762
-1
-1
-1
-1
-1

result:


Test #8:

score: 0
Time Limit Exceeded

input:

10
73846452295 620455
50989527612 3728
51772807635 209471
41365167624 8035429152
43363365851 9425141...

output:

-1
2747
141180
-1
-1
-1

result:


Test #9:

score: 0
Time Limit Exceeded

input:

10
22120306776 495832
23247250178 6368
79562554490 19874
32734834718 98896643
35888384281 1089396855...

output:

-1
2296
13849
-1
-1
-1

result:


Test #10:

score: 0
Time Limit Exceeded

input:

10
28130589289 424875
45607070965 465767
66232968981 230686
61515248868 10509226440
11206266868 6337...

output:

-1
-1
183428
-1
-1
-1
-1

result:


Test #11:

score: 0
Time Limit Exceeded

input:

10
15236605640 131590
76773281826 193875
15881927534 233031
67113829687 7741608137
94088859866 21886...

output:

98603
125550
-1
-1
-1
-1

result:


Test #12:

score: 0
Time Limit Exceeded

input:

10
7747004498 66027
77954096635 182311
72636571992 134139
59371587772 3747319652
31741332987 1562357...

output:

44858
98972
114738
-1
-1
-1

result:


Test #13:

score: 0
Time Limit Exceeded

input:

10
52447944080 396920
85295225227 490427
16062740018 284170
31819067462 14385061650
73753430383 6315...

output:

231292
347717
-1
-1
-1
-1
4110438251

result:


Test #14:

score: 0
Time Limit Exceeded

input:

10
16458964082 785492
39210832198 308576
90579242995 566326
10156100741 1194736390
36992807117 63081...

output:

-1
-1
-1
-1
-1
-1
-1

result:


Test #15:

score: 0
Time Limit Exceeded

input:

10
74391702898 247604
46995162688 153603
30018150177 20343
33463692362 15774161781
33013896733 26419...

output:

209414
97806
16135
-1
-1
4164863092
-1

result:


Test #16:

score: 0
Time Limit Exceeded

input:

10
9024265051 320767
44078185701 360375
39291196937 277829
64756922755 6933411003
87474828658 305861...

output:

-1
222523
218015
-1
-1
-1

result:


Test #17:

score: 0
Time Limit Exceeded

input:

10
11798579336 148692
38029195164 131178
43979560651 741293
63898457237 179757607
92920236151 993757...

output:

77702
74539
-1
-1
-1
2408997891
-1

result:


Test #18:

score: 0
Time Limit Exceeded

input:

10
26479252755 224121
61958934862 353329
51905628528 766320
75618930758 1077079694
16217470987 11936...

output:

196315
282642
-1
-1
-1
-1
1749669689

result:


Test #19:

score: 0
Time Limit Exceeded

input:

10
90926376778 796138
73090609979 22899
60520918542 7052
16429107583 16429107583
94872820855 9778764...

output:

-1
20358
3966
16429107584
-1
-1

result:


Test #20:

score: 0
Time Limit Exceeded

input:

10
39325538660 300086
24194702624 301899
59825284594 104522
31201472810 4475319520
50985475546 24450...

output:

205520
-1
71387
-1
-1
-1

result: