一、下一次生日
题目
题目分析
闰年,四年一次,今年是闰年,那下一个闰年就是四年后
代码
#include using namespace std; int main() { cout<< "2028" ; return 0; }
二、遗失的数字
题目
题目分析
用一个数组来记录数组A[N]出现的数字,如果出现过就记录该数组对应的数字为true,否则为flase
代码
#include #include #include using namespace std; int main() { int n; cin >> n; vector< int > a(n); vector< bool > p(n + 1, false ); for ( int i = 0; i < n; i++) { cin >> a[i]; } for ( int i = 0; i < n; i++) { if (a[i] >= 1 && a[i] <= n) //判断是否符合该范围,可以省略 { p[a[i]] = true ; } } for ( int i = 1; i <= n; i++) { if (!p[i]) //遍历,寻找没有出现在数组的最小整数 { cout << i << endl; return 0; } } cout << n + 1; return 0; }
三、超级手机号
题目
题目分析
1.把手机号当成字符串输入
2.判断后面字符是否等于第一个字符,如果后面的字符全部等于第一个字符,返回true,否则,返回false
代码
#include using namespace std; bool isz( string num) { char base = num[0]; for ( int i = 1; i < num.size(); i++) { if (num[i] != base ) { return false ; } } return true ; } int main() { int n, count = 0; cin >> n; for ( int i = 0; i < n; i++) { string num; cin >> num; if (isz(num)) { count++; } } cout << count; return 0; }
四、3枚硬币
题目
题目分析
1.完成金额存放与去重处理
unordered_set<int> amounts;
2.分成三种情况计算金额,一枚金币、两枚金币、三枚金币......
代码
#include <iostream> #include <vector> #include <unordered_set> using namespace std; int main() { int n; cin >> n; vector<int> coins(n); for (int i = 0; i < n; i++) { cin >> coins[i]; } unordered_set<int> amounts; // 使用一个循环来选择硬币的数量(0个、1个、2个或3个) for (int numCoins = 0; numCoins <= 3; numCoins++) { if (numCoins == 1) { for (int coin : coins) //遍历coins { amounts.insert(coin); } } else if (numCoins == 2) { for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { amounts.insert(coins[i] + coins[j]); } } } else if (numCoins == 3) { for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { amounts.insert(coins[i] + coins[j] + coins[k]); } } } } } cout << amounts.size()+1 << endl;//加上金额为0的情况 return 0; }
五、运动饮料和矿泉水
题目
题目分析
一个脑筋急转弯,各位可以去找规律,然后会发现:
1.奇数n时,先手最优只能拿到一瓶运动饮料,即第一杯,后面无论怎么拿,都只能拿到水,对手则会拿到运动饮料
2.偶数n时,先手最优可以拿完所有饮料,而对手只能拿水
注意,这里是双方可以从任意一边拿走饮料,而不是只能选择一边
代码
#include <iostream> using namespace std; int main() { int n; cin >> n; int maxcount = 0;//当前玩家能够获得的最多运动饮料数量 if (n % 2 == 1)//奇数回合 { maxcount = 1; cout << maxcount; return 0; } else { maxcount = n / 2; cout << maxcount; return 0; } return 0; }
标签:首秀,题目,int,排位赛,cin,蓝桥,++,num,include From: https://www.cnblogs.com/hcrzhi/p/18454719