QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#149529#6138. Function and Functionpooty#AC ✓37ms3744kbC++141.0kb2023-08-24 19:48:332023-08-24 19:48:36

Judging History

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

  • [2023-08-24 19:48:36]
  • 评测
  • 测评结果:AC
  • 用时:37ms
  • 内存:3744kb
  • [2023-08-24 19:48:33]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

#define int long long
#define REP(i, n) for (int i = 0; i < (n); i++)
typedef vector<int> vi;
typedef vector<vi> vvi;
vi mp = {1,0,0,0,1,0,1,0,2,1};

int getnext(int v) {
    int tot =0;
    for (auto c: to_string(v)) {
        tot += mp[c - '0'];
    }
    return tot;
}
int solve() {
    int x,k;cin>>x>>k;
    map<int,int> seen;
    vi carr;
    int cur = x;
    int curtime = 0;
    while (true) {
        if (curtime == k) {
            return cur;
        }
        if (seen.find(cur) != seen.end()) {
            int idx = seen[cur];
            int diff = curtime - idx;
            int rem = (k - idx)%diff;
            return  carr[idx + rem];
        } else {
            seen[cur] = curtime;
            carr.push_back(cur);
            curtime++;
            cur = getnext(cur);
        }
    }
}
signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int tc;cin>>tc;


    REP(i, tc) {
        cout<<solve()<<"\n";
    }


}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 3744kb

input:

6
123456789 1
888888888 1
888888888 2
888888888 999999999
98640 12345
1000000000 0

output:

5
18
2
0
0
1000000000

result:

ok 6 numbers

Test #2:

score: 0
Accepted
time: 37ms
memory: 3736kb

input:

100000
579268184 2
120252252 777743676
255650198 1
152055433 207664522
137430584 754115403
646417467 164848484
743551976 0
0 408695577
363072674 569574204
464290891 0
761830281 3
0 1
49176280 2
791182580 0
474930784 3
402374924 0
739903247 91553857
0 2
688106229 2
65907033 152261569
875191599 3
5319...

output:

0
0
5
0
1
1
743551976
1
1
464290891
0
1
1
791182580
1
402374924
0
0
2
0
1
1
2
1
0
0
0
3
0
0
0
1
0
0
1
0
2
0
1
1
1
0
1
0
0
0
0
0
0
1
55349255
486354015
1
1
0
1
1
0
1
1
0
1
0
9
0
1
1
0
0
1
0
1
1
1
0
0
0
0
25600152
0
0
1
22903397
705086250
771453912
1
1
0
0
1
0
1
1
1
2
1
1
1
1
1
1
6
3
3
1
0
1
0
1
86248...

result:

ok 100000 numbers