下面给出的代码即使在使用了long long并给出了一些不同的不同值之后,也不能用于高值(例如:51574523448,1000000000000等),但是可以正确地用于低值。
谁能解释一下问题是什么,怎么解决。 (抱歉英语不好)。
int repeatedString(string s, long n) { long count = 0; int secondCount = 0; long num; int length = s.length(); double remainder; num = (long) n / (length); remainder = n % (length); for(int i=0; i < length; i++) { if(s[i]=='a') { count++; if(i < remainder) secondCount++; } } count = count*num + secondCount; return count; }
请尝试在您的平台上运行此程序:
#include <iostream>
#include <limits>
int main()
{
std::cout << std::numeric_limits<long>::max() << '\n';
}
它打印的数字是long
可以存储的最大值。 我得到2147483647
,比51574523448少得多。 您可能需要使用较大的数据类型,例如long long
。