转载:https://www.liuchuo.net/

Notice
1.每次扫描到A,用这个A组成的PAT刚好是A前面的P数量*A后面T的数量.
2.因为整型的输出范围是0~2147483648.countp*countt有可能溢出,所以需要对成绩2取模,
每次结果的和也有可能溢出,所以需对每次结果和取模,总之取两次模的目的在于防止数据溢出。
#include <iostream>
using namespace std;
int main(){
string s;
cin >> s;
int sum = 0,cntp= 0,cntt = 0;
for(int i = 0;i < s.length();i++){
if(s[i] == 'T')
cntt++;
}
for(int i = 0;i < s.length();i++){
if(s[i] == 'P')cntp++;
if(s[i] == 'T')cntt--;
if(s[i] == 'A')
sum = (sum + (cntp * cntt) % 1000000007) % 1000000007;
}
cout << sum ;
return 0;
}

该博客介绍了一个C++程序,用于处理PAT(Problem Analysis and Testing)题目中的特定计数问题。程序通过扫描字符串,计算'P'和'T'的数量,并在遇到'A'时根据当前'P'和'T'的比值更新结果,同时为了避免整型溢出,对计算结果进行模运算。文章重点讨论了防止数据溢出的策略。
1710

被折叠的 条评论
为什么被折叠?



