这道题目不算难,大体思路如下:
- 两层循环,第一层控制第i张彩票,第二层控制彩票哪一位
- 定位到彩票位之后,将每一位转换为数字类型,再相加
- 比较前三位相加的和与后三位相加的和来判断输出什么
!!注意:这里我犯了一个错误,在化为整型的时候我多此一举用substr取了子串,再减去 ‘0’, 这样不行,因为要char类型才可以这样转数字,但是这里取了子串是string类型.
解法代码
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
string nums[n] = {};
for (int i = 0; i < n; i++) {
string str;
cin >> str;
nums[i] = str;
int leftSum = 0; //前三位的和
int rightSum = 0; //后三位的和
for (int j = 0; j <= 2; j++) { //统计前三位
leftSum += nums[i][j] - '0';
}
for (int j = 3; j <= 5; j++) { //统计后三位
rightSum += nums[i][j] - '0';
}
if (leftSum == rightSum) cout << "You are lucky!" << endl;
else cout << "Wish you good luck." << endl;
}
return 0;
}