站外题求助
  • 板块学术版
  • 楼主是Cat_Meow鸭
  • 当前回复12
  • 已保存回复12
  • 发布时间2022/8/4 11:23
  • 上次更新2023/10/27 17:05:57
查看原帖
站外题求助
215949
是Cat_Meow鸭楼主2022/8/4 11:23

题目链接

64分代码:

#include <bits/stdc++.h>
using namespace std;
long long n, k;
long long x, sum, a[100005], sss;
string xx, aa[100005];
long long shuru(string s) {
    long long ret = 0;
    if (s.size() >= 19) {
        for (int i = 0; i <= s.size() - 13; i++) {
            ret += (int)s[i] - 48;
            if (ret != s.size() - 13) ret *= 10;
        }
        ret /= 10;
    } else {
        for (int i = 0; i <= s.size() - 1; i++) {
            ret += (int)s[i] - 48;
            if (ret != s.size() - 1) ret *= 10;
        }
        ret /= 10;
    }
    return ret;
}
int main() {
    scanf("%lld", &n);
    for (int i = 1; i <= n; i++) {
        cin >> aa[i];
        a[i] = shuru(aa[i]);
        sss += a[i];
    }
    cin >> xx;
    x = shuru(xx);
    int i = 1;
    k += x / sss * n;
    x %= sss;
    while (x > sum) {
        k++;
        sum += a[i];
        if (i == n)
            i = 1;
        else
            i++;
    }
    printf("%lld", k);
    return 0;
}

思路就是字符串输入,然后超过long long的除以10^12,然后用除法除掉完整的序列,再一个一个排,错的都是100000以及以上的样例,我复制不下来,也看不到正确答案

2022/8/4 11:23
加载中...