小红划数字
- 关键思路:这个数的个位数字是偶数,那它就是偶数;所以我们可以优先划掉后面的数字,直到遇到偶数为止;
- 不要想的太复杂了;
#include <bits/stdc++.h>
using namespace std;
string nums;
int main() {
cin >> nums;
bool flag = false;
int lenN = nums.size();
int ans = 0;
for (int i = lenN - 1; i >= 0; --i){
int x = nums[i] - '0';
if (x & 1) {
ans++;
continue;
}
else {
flag = true;
break;
}
}
if (flag) printf ("%d", ans);
else cout << -1;
return 0;
}
小红填符号
- 思路:模拟(16个if),这是暴力的方法
#include <bits/stdc++.h>
using namespace std;
double a, b, c, x; // !!!
// 注意要特判除0的情况
int main (){
cin >> a >> b >> c >> x;
if (a + b + c == x) cout << "+ +" << endl;
else if (a + b - c == x) cout << "+ -" << endl;
else if (a + b * c == x) cout << "+ *" << endl;
else if (c && (a + b / c == x)) cout << "+ /" << endl;
else if (a - b + c == x) cout << "- +" << endl;
else if (a - b - c == x) cout << "- -" << endl;
else if (a - b * c == x) cout << "- *" << endl;
else if (c && a - b / c == x) cout << "- /" << endl;
else if (a * b + c == x) cout << "* +" << endl;
else if (a * b - c == x) cout << "* -" << endl;
else if (a * b * c == x) cout << "* *" << endl;
else if (c && a * b / c == x) cout << "* *" << endl;
else if (b && a / b + c == x) cout << "/ +" << endl;
else if (b && a / b - c == x) cout << "/ -" << endl;
else if (b && a / b * c == x) cout << "/ *" << endl;
else if (b && c && a / b / c == x) cout << "/ /" << endl;
else cout << "? ?" << endl;
return 0;
}
小红和R (模拟)
- 思路:找规律
- 第一行,输出n+2个R;
- 接下来n行,先输出一个R,然后输出n个空格,接着再输出一个R来结尾;
- 接下来,输出n+2个R;
- 接下来的n+1行,每行都是输出两个R,注意,两个R之间有空格,空格的个数从0开始递增,知道最后一行
- 有时候这样的题,单个看,不好看,就得一块一块的分区看,来找规律;
#include <bits/stdc++.h>
using namespace std;
int n;
int main() {
cin >> n;
for (int i = 0; i < n + 2; ++i) {
cout << "R";
}
cout << endl;
for (int i = 0; i < n; ++i) {
cout << "R";
for (int j = 0; j < n; ++j) {
cout << ' ';
}
cout << "R" << endl;
}
for (int i = 0; i < n + 2; ++i) {
cout << "R";
}
cout << endl;
for (int i = 0; i < n + 1; ++i) {
cout << "R";
for (int j = 0; j < i; ++j) {
cout << ' ';
}
cout << "R" << endl;
}
return 0;
}