原因:如果字符串从头查到尾,那么乘法爆long long了
先查找是否有0,如果有0直接输出kawaii就行
然后如果在查找过程中发现大于 k 了,直接break输出dame
80pts代码
#include<bits/stdc++.h>
using namespace std;
int main() {
int t, k;
cin >> t >> k;
while (t--) {
string s;
cin >> s;
long long sum = 1;
for (int i = 0; i < s.size(); i++) {
sum *= s[i] - '0';
}
if (sum <= k) cout << "kawaii" << "\n";
else cout << "dame" << '\n';
}
}
AC代码
#include<bits/stdc++.h>
using namespace std;
int main() {
int t, k;
cin >> t >> k;
while (t--) {
string s;
cin >> s;
long long sum = 1;
if (s.find('0') != string::npos) {
cout << "kawaii" << '\n'; continue;
}
bool flag = true;
for (int i = 0; i < s.size(); i++) {
sum *= s[i] - '0';
if (sum > k) { cout << "dame" << '\n'; flag = false; break; }
}
if(flag) cout << "kawaii" << "\n";
}
}