s.size() 直接和 long long 运算的时候需要强制转型。例如 t = -cnt0 * (ll)s.size() / cnt1。
现象:实际返回值是 string::size_type 类型的,除数/模数是负数时会出问题。
例子:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n = -2;
string s = "absbs";
int main(){
ll k = s.size() % n,t = (ll)s.size() % n;
printf("%lld %lld",k,t);
return 0;
}
但是不作运算或者加减乘的时候都没有问题,不知道为什么,也许是 ub?