院校机试刷题第八天:B3846闰年求和、P1012字母异位词分组
一、B3846闰年求和
1.题目描述
题目来源:洛谷
2.解题思路
遍历给出范围的所有年份,然后依次判断是否是闰年即可。
核心在于判断闰年,用数学表达式表示就是:
-
年份 % 4 == 0 且 年份 % 100 != 0,或者
-
年份 % 400 == 0
3.代码
洛谷竟然看不了出错的数据??leetcode火是有原因的
这个代码有一个测试点是错的
#include <iostream>
using namespace std;bool judge(int a) {if(((a % 4 == 0) && (a % 100 != 0)) || (a % 400 == 0)) {return true;}return false;
}int main() {int a, b;cin >> a >> b;int sum = 0;for(int i = a; i <= b; i++) {bool result = judge(i);if(result == 1) {sum += i;}}cout << sum;return 0;
}
二、P1012字母异位词分组
题目来源:洛谷,就不写题目描述了
1.解题思路
暴力法:将所有可能的方式都拼接起来,看看哪个最大就输出哪个。
理解法:比较输入的几个数谁第一个数字大,相同的话就比第二位,注意这里是比较每一位数字的大小而不是比较整体数字的大小,所以可以用string来存储数字,直接比较string的大小即可。
按照这样的比较方式将所有数字依次排序,然后拼接即可。
2.代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;bool cmp(string a, string b) {return (a + b) > (b + a);
}int main() {int n;cin >> n;string str[n];for(int i = 0; i < n; i++) {cin >> str[i];}sort(str, str + n, cmp);for(int i = 0; i < n; i++) {cout << str[i];}return 0;
}