我在做这题时前面都好好的,最后输出结果时只有测试点6是错的。
原因是我输出时,令i=k,k是连续因子的最小值,maxcount是连续因子的数量。
for (int i = k; i < k+maxcount; i++) {
cout << i;
if (i < k+maxcount-1)cout << '*';
}
考虑N=2147483647,这时i=2147483647,i<k+maxcount(2147483648),超出int型表示范围,实际为-2147483648。
解决:在前面加上判断。
if(k==2147483647)cout<<k;
else{
for (int i = k; i < k+maxcount; i++) {
cout << i;
if (i < k+maxcount-1)cout << '*';
}
}
当然,也可以直接这样写。
for (int i = 0; i < maxcount; i++) {
cout << k+i;
if (i < maxcount-1)cout << '*';
}