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以及以上的样例,我复制不下来,也看不到正确答案